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');
这对我有用。但我不确定它是否完美。我不明白它的完整含义。
答案 0 :(得分:1)
如果要查找单词Packages
的所有出现,可能在其之前或之后有空格(即单独单独隔离的单词),那么您可以尝试以下WHERE
条件:< / p>
WHERE definition LIKE ' Packages' OR
definition LIKE 'Packages ' OR
definition LIKE ' Packages ' OR
definition LIKE 'Packages'
答案 1 :(得分:1)
只需从%
移除通配符'Packages'
即可添加LTRIM
和RTRIM
,以避免出现空白问题,如下所示:
select B.* from sys.sql_modules A
JOIN SYS.objects B ON A.object_id=B.object_id
WHERE LTRIM(RTRIM(definition)) LIKE 'Packages'