2016-05-12 63 views
1
select B.* from sys.sql_modules A 
JOIN SYS.objects B ON A.object_id=B.object_id 
WHERE definition LIKE '%Packages%' 

我想在我所有的數據庫結果中找到所有'Packages'的出現。我想只返回結果有這個完全匹配'包',而不是其他有這個作爲子字符串?sql server:如何在所有數據庫對象中找到完全匹配?

現在我得到SPs'SPAPacakges'等'包'作爲子字符串。我想刪除這些。

我該怎麼做?

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

這是爲我工作。但我不確定它是否完美。我不明白它的完整含義。

回答

1

如果你想要查找的單詞Packages所有出現,可能與之前的空白或之後(即孤立詞本身),那麼你可以嘗試以下WHERE條件:

WHERE definition LIKE ' Packages' OR 
     definition LIKE 'Packages ' OR 
     definition LIKE ' Packages ' OR 
     definition LIKE 'Packages' 
+0

它不返回任何結果。 – maverick

+0

您還應該向我們展示您的表格中的一些示例記錄。 –

+0

我的原始發佈查詢返回帶有'TC_SoldRSAPackages'等詞的結果。當我修改它像你所建議的那樣,它沒有給出任何結果。雖然我很多SP都有像'Packages'這樣的詞。 – maverick

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' 
+0

它沒有返回任何結果。 – maverick

+0

仍然無法正常工作 – maverick

相關問題