【发布时间】:2017-02-16 02:34:36
【问题描述】:
要求
- 应删除单行 cmets(例如 -- 我的评论)。
- 应该删除多行 cmets(例如 /* my comment */)。
- 应忽略字符串文字的内容(例如,“这是一个多行注释:/* 我的注释 */”)。
- 应忽略标识符的内容(例如“-- 第 1 列--”)。
文字和标识符
文字和标识符可以跨越多行
单行cmets
单行注释可能是代码的最后一个元素,并且可能不以换行符结尾。
嵌套多行 cmets
在SQL Server、PostgreSQL等数据库中,可以嵌套多行cmets,例如-
/* outer comment /* inner comment */ */
以下代码无效,因为只关闭了内部注释:
/* opened outer comment /* closed inner comment */
在 Teradata、Oracle、MySql 和 SQLite 等数据库中,没有嵌套 cmets 的概念。 以下代码无效,因为注释已经用最左边的 */ 关闭了。
/* comment /* is closed */ ERROR */
这是一个有效的代码:
/* comment /* still the same comment */
【问题讨论】:
-
这不是问题。 StackOverflow 是一个问答网站。通过提出一个问题来使您的帖子合法化,如何从 SQL 查询中剥离 cmets? 并将其作为答案发布。回答你自己的问题是完全值得尊重的,但你必须遵守 StackOverflow 机制。
-
或者,给自己写一个博客。
标签: sql regex oracle comments teradata