SQL Server: Comment find la correspondance exacte dans tous les objects de la database?

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

Je veux find toutes les occurrences du mot «Paquets» dans tous mes résultats de databse. Je veux seulement récupérer les résultats qui ont cette correspondance exacte 'Paquets' et pas d'autre qui a ceci comme sous-string?

En ce moment je reçois des SP avec 'SPAPacakges' etc qui ont des 'Packages' comme sous-string. Je veux les enlever.

Comment je fais ça?

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

Cela fonctionne pour moi. Mais je ne suis pas sûr que ce soit parfait. Je ne comprends pas sa signification complète.

Si vous voulez find toutes les occurrences du mot Packages , éventuellement avec des espaces avant ou après (c'est-à-dire le mot isolé), alors vous pouvez essayer la condition suivante:

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

Supprimez simplement les caractères generics % de 'Packages' et vous pourriez append LTRIM et RTRIM pour éviter les problèmes avec les espaces, comme suit:

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