在Sql server 2008中使用like子句选择Query

时间:2011-01-10 05:26:50

标签: sql-server

Table name  : sp_text  
Column name : obj_Text

在此列中,所有存储过程都存储为文本。

我需要检索raiserrorraiserror%d 的所有存储过程。

例如,A SP中包含以下raiserror

raiserror('quantity adjustment is not allowed in row no %d', 16, 1, @fprowno)  

我尝试了以下查询但无法得出结果。

select *
from   sp_text_ismail 
where  obj_Text like '%raiserror%'
  and  obj_Text like '%/%d%'

2 个答案:

答案 0 :(得分:3)

使用系统视图sys.sql_modules:更简单。你可以在LIKE

中用括号转义%
SELECT OBJECT_NAME(object_id), * FROM sys.sql_modules
WHERE definition LIKE '%raiserror%[%]d%'

您也无法选择或过滤存储过程。

答案 1 :(得分:-1)

您必须在查询中使用转义字符'\',并在最后提及它。您使用了正斜杠而不是向后斜杠。实际上,您可以将任何字符用作转义字符,但最后必须提及。

尝试此查询

select * from sp_text_ismail where obj_Text like '%raiserror%' and obj_Text like '%\%d%' ESCAPE '\'