Подтвердить что ты не робот

Как сравнить строки в sql, игнорируя регистр?

Как написать запрос в Oracle, игнорируя случай сравнения строк? Например, "ангел", "Ангел" , "Ангел" , "Ангел" , "Англия" будут равны при сравнении.

4b9b3361

Ответ 1

Если вы соответствуете полному значению поля, используйте

WHERE UPPER(fieldName) = 'ANGEL'

EDIT: из вашего комментария, который вы хотите использовать:

SELECT 
    RPAD(a.name, 10,'=') "Nombre del Cliente"
    , RPAD(b.name, 12,'*') "Nombre del Consumidor" 
FROM 
    s_customer a, 
    s_region b 
WHERE 
    a.region_id = b.id 
    AND UPPER(a.name) LIKE '%SPORT%' 

Ответ 2

Вы можете использовать ключевое слово UPPER:

SELECT *
FROM Customers
WHERE UPPER(LastName) = UPPER('AnGel')

Ответ 3

Вы можете использовать:

select * from your_table where upper(your_column) like '%ANGEL%'

В противном случае вы можете использовать:

select * from your_table where upper(your_column) = 'ANGEL'

Что будет более эффективным, если вы ищете совпадение без дополнительных символов до или после поля your_column, как предложил Гэри Рэй в своих комментариях.

Ответ 4

перед сравнением двух или более строк сначала выполните следующие команды

alter session set NLS_COMP=LINGUISTIC;
alter session set NLS_SORT=BINARY_CI;

после выполнения этих двух операторов, вы можете сравнить строки и нечувствительность к регистру. Например, у вас было две строки: s1 = 'Apple' и s2 = 'apple', если yow хочет сравнить две строки перед выполнением выше эти две строки будут обрабатываться как две разные строки, но когда вы сравниваете строки после выполнения двух операторов alter, то эти две строки s1 и s2 будут рассматриваться как одна и та же строка

причины использования этих двух утверждений

Нам нужно установить NLS_COMP = LINGUISTIC и NLS_SORT = BINARY_CI, чтобы использовать нечувствительность к регистру 10gR2. Поскольку они являются модифицируемыми сеансом, это не так просто, как устанавливать их в параметрах инициализации. Мы можем установить их в параметрах инициализации, но они влияют только на сервер, а не на клиентскую сторону.

Ответ 5

Подробнее о г-н Дредель ответ и комментарий tuinstoel. Данные в столбце будут сохранены в конкретном случае, но вы можете изменить чувствительность к сеансу для соответствия.

Вы можете изменить сеанс или базу данных, чтобы использовать лингвистический или нечувствительный к регистру поиск. Вы также можете настроить индексы для использования определенных заказов сортировки.

например,

ALTER SESSION SET NLS_SORT=BINARY_CI;

Как только вы начнете получать на неанглийские языки, с акцентами и т.д., есть дополнительная поддержка для акцентирования. Некоторые возможности зависят от версии, поэтому ознакомьтесь с документом Globablization для вашей конкретной версии Oracle. Последний (11g) здесь

Ответ 6

Я не помню точный синтаксис, но вы можете установить столбец таблицы нечувствительным к регистру. Но будьте осторожны, потому что тогда вы больше не сможете сравниться по делу, и если вы хотите "здорово" не совпадать с "CoOl", это будет невозможно.