协慌网

登录 贡献 社区

在 SQL Server 中的存储过程中搜索文本

我想从我所有的数据库存储过程中搜索文本。我使用下面的 SQL:

SELECT DISTINCT
       o.name AS Object_Name,
       o.type_desc
  FROM sys.sql_modules m
       INNER JOIN
       sys.objects o
         ON m.object_id = o.object_id
 WHERE m.definition Like '%[ABD]%';

我想在所有存储过程(包括方括号[ABD]中搜索[ABD] ,但未给出正确的结果。如何更改查询以实现此目的?

答案

转义方括号:

...
WHERE m.definition Like '%\[ABD\]%' ESCAPE '\'

然后,方括号将被视为字符串文字,而不是通配符。

试试这个要求:

询问

SELECT name
FROM   sys.procedures
WHERE  Object_definition(object_id) LIKE '%strHell%'

您是否尝试过使用某些第三方工具进行搜索?那里有几个免费的,过去节省了我很多时间。

以下是我成功使用的两个 SSMS 插件。

ApexSQL 搜索 –搜索数据库中的模式和数据,并具有附加功能,如依赖跟踪等。

SSMS 工具包 –具有与上一个和其他几个很酷的功能相同的搜索功能。对于 SQL Server 2012 不是免费的,但仍然非常实惠。

我知道这个答案与问题(并非更具体)并非 100%相关,但希望其他人会发现这很有用。