REGEX - 查找两个单词之间出现的逗号

时间:2013-12-11 22:15:33

标签: sql sql-server regex tsql

我正在尝试查找在MS SQL 2008/2012中不兼容的旧格式化SQL语句。我想要找到的是使用逗号用于在“from”子句中但在“where”子句之前输入表名。

一种旧的查询方式的SQL示例。 TSQL中的表格:

  

选择*

     

来自测试,

  test2, 

  test3
     

其中test1.abc = 1

这些陈述可以是多方的。行,可能只包含几个逗号。

2 个答案:

答案 0 :(得分:1)

我认为这不会捕获所有内容(例如,考虑CTE和子查询,没有where子句的查询,没有你期望的查询等等),它可能会返回误报,但可能会:

WHERE LOWER(definition) LIKE '%from%,%where%';

如果您需要更精细和可靠的东西,则需要使用CLR,因为T-SQL中没有RegEx支持。

答案 1 :(得分:0)

使用支持群组和抓取工作的these CLR functions。它只是.NET中RegEx类的包装器,迟早你需要在你的T-SQL代码中使用RegEx。