2017-03-20 2 views
1

Ich brauche Hilfe mit Regex für dieseSQL Wie aber nicht in Worten regex

Ich bin auf der Suche nach dem Wort "John" in meiner Tabelle. Ich beginne mit einer einfachen Abfrage

select * from tblA where Line like '%john%' 

das OK. aber ich habe Ergebnisse wie "VarJohnA" oder "WowJohnCool". Die, die ich speziell für die Suche ist mehr wie zum Beispiel

1. 'John ' (begins with J ends with white space) 
2. ' John ' (begins with white space ends with white space) 
3. 'John,' (begins with J ends with comma) 
4. ',john,' (begins with comma ends with comma) 
5. ' John,' (begins with white space ends with comma) 

Jetzt kann vorschlagen, dass Sie eine SQL zu schreiben, wie folgt.

select * from tblA where Line like '% john %' 
or Line like 'john %' 
or Line like '%john,%' 
or Line like '%,john,%' 
or Line like '% john,%' 

Aber das ist nicht das, was ich suche, weil die 5 Kugeln oben ist das, was ich denken kann, gibt es vielleicht eine Unzahl von

'"John"' 

oder

'"John' 

oder

'<John' 
'=John' 
'=John+' 

und wer weiß was noch.

Ich dachte, das genauere Ergebnis dessen, was ich suche, ist im Grunde genommen. Ich möchte "John" finden, aber "John" ist nicht innerhalb von a-z. so würde die Regex so etwas wie

select * from tblA where line not like '[a-z]John[a-z]' 

oder

select * from tblA where line not like '%[^a-z]John[^a-z]%' 

Aber keiner arbeitet sein.

aber kurz, ich bin auf der Suche nach dem Wort "John", aber es muss nicht zwischen a-z Zeichen john.

bitte raten

danke

Antwort

0

Wie wäre das?

where ' ' + replace(Line, ',', ' ') + ' ' like '% john %' 

Oder für Nicht-Buchstaben im Allgemeinen:

where ' ' + Line + ' ' like '%[^a-zA-Z]john[^a-zA-Z]%' 
+0

die zweite arbeitet. aber ich bin jetzt verwirrt, ich würde denken, dass es "NICHT WIE" anstatt "WIE" sein sollte? – BobNoobGuy

+0

@BobNoobGuy. . . Ich verstehe deine Verwirrung nicht. Das Ziel ist, "John" in der Spalte zu finden. –

Verwandte Themen