Sélectionnez les lettres où elles ne sont pas précédées ou suivies de lettres, par exemple FIND Ag ou * Ag mais pas SAG ou MAGNET

J'ai besoin de find les caractères Ag dans une colonne composée d'une variété de longueurs de strings / positions de strings mais où Ag ne fait pas partie d'un mot (par exemple S AG , ie Ag n'est pas précédé et / ou suivi de lettres [AZ] ).

j'ai essayé

WHERE AtsortingbuteColumn LIKE '%[^AZ]AG[^AZ]%' 

mais il exclut les résultats quand Ag n'a pas d'autre caractère avant ou après (c'est-à-dire que la string ne contient que Ag ). Peut-être un REGEXP avec la fonction *? Alors que Ag peut être précédé et / ou suivi par zéro ou plus de [AZ] …

Si cela peut fonctionner pouvez-vous me fournir un exemple de la requête pour MS SQL?

Qu'en est-il de rembourrer la string recherchée avec des séparateurs valides, par exemple des espaces? par exemple

 WHERE ' ' + AtsortingbuteColumn + ' ' LIKE '%[^AZ]AG[^AZ]%' 

que dis-tu de ça?,

 WHERE AtsortingbuteColumn LIKE '%[^AZ]AG[^AZ]%' OR AtsortingbuteColumn LIKE 'AG[^AZ]%' OR AtsortingbuteColumn LIKE '%[^AZ]AG' OR AtsortingbuteColumn = 'AG' 

Pourriez-vous simplement faire correspondre le cas spécifique de la search? Si "Ag" n'apparaît pas dans vos résultats, bien sûr

 USE tempdb; GO CREATE TABLE dbo.foo(bar VARCHAR(32) COLLATE Latin1_General_CS_AS); GO INSERT dbo.foo VALUES('John'),('john'); GO SELECT bar FROM dbo.foo WHERE bar LIKE 'j%'; -- 1 row SELECT bar FROM dbo.foo WHERE bar COLLATE Latin1_General_CI_AS LIKE 'j%'; -- 2 rows GO DROP TABLE dbo.foo; 

Plus d'infos ici L'opérateur LIKE est-il sensible à la casse avec le server MS SQL?

Cela fonctionnera-t-il pour vous? ([^AZ]|\s)AG([^AZ]|\s)