我正在尝试搜索存储过程中使用的表达式的所有实例,并得到以下内容:
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)%'