PL/SQL:ORACLE 中的感叹号

Posted

技术标签:

【中文标题】PL/SQL:ORACLE 中的感叹号【英文标题】:PL/SQL: Exclamation Mark in ORACLE 【发布时间】:2018-11-20 11:43:37 【问题描述】:

以下查询中的感叹号 (!) 是什么?

l_sql := q'!
              SELECT CASE WHEN FILTER_CNT = 0 THEN NULL ELSE FILTER_LIST END AS FILTER_LIST
              FROM
              (
                  SELECT 'TABLE_NAME NOT LIKE ' || LISTAGG(''''||EXCLUSION_CRITERIA||'''', ' AND TABLE_NAME NOT LIKE ') WITHIN GROUP (ORDER BY ROWNUM) AS FILTER_LIST, COUNT(*) AS FILTER_CNT
                  FROM !'|| p_after_owner ||q'!.UT_TABLE_EXCLUSION
                  WHERE EXCLUSION_TYPE = 'P'
              )
            !';

【问题讨论】:

【参考方案1】:

q 引用字符串的方法意味着您不必对字符串中的单引号进行转义。

根据the documentation,它的工作原理如下:

q'<single character delimiter><text><single character delimiter>'

因此,示例字符串中的 !s 充当引号分隔符。

例如,如果你想在旧式引用中使用字符串Don't worry, be happy,那将变成:

'Don''t worry, be happy'

但新的报价机制是:

q'!Don't worry, be happy!'

q'Don't worry, be happy'

等等

【讨论】:

以上是关于PL/SQL:ORACLE 中的感叹号的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中的感叹号和函数function

C语言中的感叹号是怎么用的

查询 SQL 中的感叹号

类型定义中的感叹号

Scala中的Akka,感叹号和问号

excel重感叹号(!)是啥意思