没有RegEx的SQL Server模式匹配

时间:2012-08-17 20:04:53

标签: sql-server-2005 pattern-matching

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

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)等等。
  • 我没有CLR集成(我现在也无法注册)因此我 不能使用正则表达式。

替代方案是使用所有可能性多次运行查询,但是有更好的方法在1个查询中完成此操作吗?

1 个答案:

答案 0 :(得分:3)

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

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