PL/SQL:ORACLE中的感叹号
PL/SQL: Exclamation Mark in ORACLE
以下查询中的感叹号 (!) 是什么?
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'
)
!';
引用字符串的q
方法意味着您不必对字符串中的单引号进行转义。
根据the documentation,它是这样工作的:
q'<single character delimiter><text><single character delimiter>'
因此,示例字符串中的 !
用作引号分隔符。
例如,如果您要使用字符串 Don't worry, be happy
,在旧式引用中,将变为:
'Don''t worry, be happy'
但新的报价机制将是:
q'!Don't worry, be happy!'
或
q'{Don't worry, be happy}'
等等
以下查询中的感叹号 (!) 是什么?
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'
)
!';
引用字符串的q
方法意味着您不必对字符串中的单引号进行转义。
根据the documentation,它是这样工作的:
q'<single character delimiter><text><single character delimiter>'
因此,示例字符串中的 !
用作引号分隔符。
例如,如果您要使用字符串 Don't worry, be happy
,在旧式引用中,将变为:
'Don''t worry, be happy'
但新的报价机制将是:
q'!Don't worry, be happy!'
或
q'{Don't worry, be happy}'
等等