我正在尝试搜索存储过程中使用的表达式的所有实例,并具有:
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_)%'
这样的“_”通配符,因为它与a恰好匹配
单个字符,因此不匹配
ufn_TurnFlagOn(5,ColumnA)
等等。替代方案是使用所有可能性多次运行查询,但是有更好的方法在1个查询中完成此操作吗?
答案 0 :(得分:3)
如果空格是唯一的问题,您可以使用REPLACE
删除它们,然后执行:
WHERE REPLACE(OBJECT_DEFINITION(object_id), ' ', '')
LIKE '%ufn_TurnFlagOn(5,ColumnA)%'