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)