没有RegEx的SQL Server模式匹配



我正在尝试搜索存储过程中使用的表达式的所有实例,并得到以下内容:

SELECT name, type_desc, create_date, modify_date
    FROM sys.procedures 
    WHERE OBJECT_DEFINITION(object_id) LIKE '%ufn_TurnFlagOn(5,ColumnA)%'
ORDER BY name

但这不会返回函数参数之间可能有空格的sps,如:

ufn_TurnFlagOn( 5,ColumnA )
ufn_TurnFlagOn(5, ColumnA)
ufn_TurnFlagOn( 5,ColumnA)

请注意:

  • 我不能像LIKE '%ufn_TurnFlagOn(_5_,_ColumnA_)%'那样使用"_"通配符,因为它与单个字符,因此不匹配CCD_ 2等
  • 我没有CLR集成(现在也不能注册),因此我无法使用正则表达式

另一种选择是在所有可能的情况下多次运行查询,但有更好的方法可以在一个查询中实现这一点吗?

如果空间是唯一的问题,您可以使用REPLACE删除它们,然后使用:

WHERE REPLACE(OBJECT_DEFINITION(object_id), ' ', '') 
    LIKE '%ufn_TurnFlagOn(5,ColumnA)%'

最新更新