如何解决挑战:在SQL查询中删除注释
我正在寻找一种使用任何编程语言的算法来删除SQL Server脚本文本文件中的注释。
评论就像这样
-
内联:
- 在行首的a /(带有-tag或/ * * / tags组)
- b /位于行尾(带有-标记或/ * * / tags组)
-
多行:
- 在行首的a /(带有-tag或/ * * / tags组)
- b /位于行尾(带有-标记或/ * * / tags组)
-
包含评论:
- 一个带有/的内嵌注释,其中包括另一个(或许多其他组)-或/ * * /(或两者)
- b /多行注释,带有/ * /组,其中包括另一个(或许多其他组)/ * /或-(或两者)
-
请注意SQL短语中的字符串注释 (内联或多行(包含或不包含))
例如:select field as '-- comment' from table
不应删除它们。
祝你好运。
谢谢
解决方法
您可以在sql服务器using a parser
中完成此操作declare @sql nvarchar(max) = N'
/*
this is a multiline comment
*/
select * --this is another star comment
from sys.objects;
update mytable /*this is an update comment*/
set colA = colB;
';
declare @x xml = cast(dbo.parseSqlToXml(@sql) as xml);
--get all comment tokens
declare @t table (comment nvarchar(max));
insert into @t(comment)
select
replace(replace(replace(s.t.value('.','nvarchar(max)'),'\r\n',CHAR(13) + CHAR(10)),'\n',char(10)),'\r',char(13))
from @x.nodes('/SqlScript/SqlBatch/Tokens/Token[contains(@type,"COMMENT")]') as s(t);
--update @sql
update @t
set @sql = replace(@sql,comment,'');
--get @sql
select @sql
for xml path('');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。