2016-04-07 12 views
1

Ich versuche, alle Namen mit "Schmidt" zu wählen. Aber einige Namen sind Kleinbuchstaben und einige Großbuchstaben.SQL - Wählen Sie Name, egal Groß- oder Kleinbuchstaben

Ich versuche dies:

Select * from Account 
where name like '%chmidt%' 
or name like '%CHMIDT%' 

Aber wenn ein Buchstabe innerhalb des Wortes Großbuchstaben ist (. Z SCHMIDT), die Aussage dieses nur knapp sein Ziel zu finden. Kennen Sie jemanden einen einfachen Weg, um dieses Problem zu lösen?

+0

Ich wechselte die Datenbank-Tag zu "Oracle" (Entfernen von MySQL), weil das Verhalten besser Oracle passt als MySQL. –

+0

Ja, dies gilt auch nicht für T-SQL. – GibralterTop

Antwort

4

Ich vermute, dass Sie Oracle und MySQL nicht verwenden, weil es Fall sensitiv ist standardmäßig. Verwenden Sie einfach die upper() oder lower() Funktionen:

Select * 
from Account 
where lower(name) like '%chmidt%'; 

Ich würde eine s hinzufügen, wenn Sie Namen wie "Schmidt" wollen:

Select a.* 
from Account a 
where lower(a.name) like '%schmidt%'; 

Hinweis: Diese hammerschmidt und ähnliche Namen finden. Wenn Sie eine exakte Übereinstimmung wünschen, entfernen Sie die Platzhalter oder verwenden Sie =.

+0

Dies ist die vollständigste und korrekteste Antwort und sollte als solche akzeptiert werden. – SubliemeSiem

0

Sie einen Kleinen Vergleich:

Select * from Account 
where lower(name) like '%chmidt%' 
0

Wenn Sie nur nach Schmidt suchen, ist meine Präferenz (für Lesbarkeit), weder LOWER noch UPPER zu verwenden, sondern INITCAP - und Gleichheit, nicht der LIKE-Operator. Wie so:

Verwandte Themen