【发布时间】:2015-02-19 16:12:36
【问题描述】:
我有一个包含带有提示的 SQL 查询的字符串 (clob),我需要从 sql 代码中删除这些提示。
所以这个:
select
/*+ ALL_ROWS */
/* 2014-12-08 08:26:40.533 -6e99e394:14a2a127782:-466(TXN_ID:-1) */
ID, ORIGIN_TICKET_ID, LIFECYCLE_STATUS ...
应该看起来像:
select ID, ORIGIN_TICKET_ID, LIFECYCLE_STATUS ...
我尝试使用 replace 和 REGEXP_REPLACE 但到目前为止没有运气。
【问题讨论】:
-
请提供未能达到预期结果的陈述。
-
您似乎也想删除普通的 cmets - 而不仅仅是提示。如果是这样:它们是否都在
SELECT之后立即出现?所有这些语句是否都存储为单行,或者它们可能有换行符?哪个版本的 Oracle? -
基本上 /* 和 */ 之间的所有内容都应该删除(提示),不需要处理 cmets,oracle 是 v11.2.0.2
-
一个例子是:SELECT REPLACE(main.c,'/*%*/') FROM MAIN;但 % 并没有完成这项工作,我似乎找不到与之等效的东西。
-
提示是紧跟在
SELECT之后的注释,在cmets 开头/*之后有一个附加的加号。在您的示例中,包含日期信息的子字符串是普通注释,而不是提示。
标签: oracle replace regexp-replace