sql server:如何在所有数据库对象中找到完全匹配?

时间:2016-05-12 06:47:05

标签: sql sql-server

select B.* from sys.sql_modules A
JOIN  SYS.objects B ON A.object_id=B.object_id
WHERE definition LIKE '%Packages%'

我想在所有数据库结果中找到所有出现的'Packages'字样。我想只返回具有完全匹配'Packages'的结果而不是其他具有子字符串的结果?

现在我得到带有'SPAPacakges'等的SP,其中'Packages'作为子串。我想删除这些。

我该怎么做?

SELECT referencing_schema_name, referencing_entity_name, 
referencing_id, referencing_class_desc
FROM sys.dm_sql_referencing_entities ('dbo.Packages', 'OBJECT');

这对我有用。但我不确定它是否完美。我不明白它的完整含义。

2 个答案:

答案 0 :(得分:1)

如果要查找单词Packages的所有出现,可能在其之前或之后有空格(即单独单独隔离的单词),那么您可以尝试以下WHERE条件:< / p>

WHERE definition LIKE ' Packages' OR
      definition LIKE 'Packages ' OR
      definition LIKE ' Packages ' OR
      definition LIKE 'Packages'

答案 1 :(得分:1)

只需从%移除通配符'Packages'即可添加LTRIMRTRIM,以避免出现空白问题,如下所示:

select B.* from sys.sql_modules A
JOIN  SYS.objects B ON A.object_id=B.object_id
WHERE LTRIM(RTRIM(definition)) LIKE 'Packages'