2

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

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_)%'因为它完全匹配单个字符,因此它不会匹配 ufn_TurnFlagOn(5,ColumnA)等等。
  • 我没有 CLR 集成(现在也不能注册),因此我不能使用正则表达式。

另一种方法是在所有可能性下多次运行查询,但有没有更好的方法在 1 个查询中完成此操作?

4

1 回答 1

3

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

WHERE REPLACE(OBJECT_DEFINITION(object_id), ' ', '') 
    LIKE '%ufn_TurnFlagOn(5,ColumnA)%'
于 2012-08-17T20:17:16.383 回答