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

私はすべての私のdatabseの結果で 'Packages'という単語のすべての出現を見つけたいと思います。この正確な一致が「Packages」で、これを部分文字列として持つ他のものではない結果を返すだけですか?sql server:どのようにしてすべてのデータベースオブジェクトの完全一致を見つけるか?

今、私は 'SPAPacakges'などで 'Packages'を部分文字列として持つSPを取得します。私はこれらを取り除きたい。

どうすればよいですか?

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を持っていますが。 – 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

関連する問題