我正在尝试查找在MS SQL 2008/2012中不兼容的旧格式化SQL语句。我想要找到的是使用逗号用于在“from”子句中但在“where”子句之前输入表名。
一种旧的查询方式的SQL示例。 TSQL中的表格:
选择*
来自测试,
test2, test3
其中test1.abc = 1
这些陈述可以是多方的。行,可能只包含几个逗号。
答案 0 :(得分:1)
我认为这不会捕获所有内容(例如,考虑CTE和子查询,没有where子句的查询,没有你期望的查询等等),它可能会返回误报,但可能会:
WHERE LOWER(definition) LIKE '%from%,%where%';
如果您需要更精细和可靠的东西,则需要使用CLR,因为T-SQL中没有RegEx支持。
答案 1 :(得分:0)
使用支持群组和抓取工作的these CLR functions。它只是.NET中RegEx类的包装器,迟早你需要在你的T-SQL代码中使用RegEx。