2016-04-07 1 views
1

Я пытаюсь выбрать все имена с помощью «Schmidt». Но некоторые имена имеют нижний регистр и некоторые верхние регистры.SQL - выберите имя, независимо от того, будут ли буквы верхнего или нижнего регистра

Я стараюсь это:

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

Но когда одна буква в слове в верхнем регистре (. Например Schmidt), заявление не нашли это. Знайте, кто-нибудь простой способ решить эту проблему?

+0

Я переключил тег базы данных на «oracle» (удаление MySQL), потому что поведение лучше подходит для Oracle, чем MySQL. –

+0

Да, это не относится и к T-SQL. – GibralterTop

ответ

4

Я предполагаю, что вы используете Oracle, а не MySQL, потому что это дело senstive по умолчанию. Просто используйте upper() или lower() функции:

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

Я бы добавить s если вы хотите имена, как «Шмидт»:

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

Примечание: Это будет найти hammerschmidt и подобные названия. Если вы хотите получить точное соответствие, удалите подстановочные знаки или используйте =.

+0

Это самый полный и правильный ответ и должен быть принят как таковой. – SubliemeSiem

0

ли нижнее сравнение случая:

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

Если вы ищете только Schmidt, мои предпочтения (для удобства чтения) - использовать ни LOWER, ни UPPER, но INITCAP - и равенство, а не оператор LIKE. Нравится так:

select ... where initcap(name) = 'Schmidt' 
Смежные вопросы