Игнорировать регистр в запросе

Возможный дубликат:
Oracle DB: Как написать запрос без учета регистра?

У меня есть sql-запрос, и условие where содержит английские и арабские символы, поэтому я не могу использовать toupper или tolower, потому что арабские символы будут отображаться в виде вопросительных знаков.

СУБД это оракул


person 4kr4m    schedule 24.01.2012    source источник
comment
См. stackoverflow.com/a/4401799/896341.   -  person Stefan    schedule 24.01.2012


Ответы (1)


Вы имеете в виду lower() и upper(), верно?

Oracle поддерживает множество различных языков, поэтому вам необходимо используйте функцию nls. В этом случае nls_lower.

select nls_lower('my string', 'NLS_SORT = ARABIC') from dual

Это может вызвать проблемы с латинскими символами — стоит проверить ваш вывод, поэтому вы можете сделать что-то похожее на приведенное ниже, чтобы смягчить последствия:

select case when instr(lower('my_string'),'?') > 0
                 then nls_lower('my string', 'NLS_SORT = ARABIC')
            else lower('my_string')
  from dual
person Ben    schedule 24.01.2012