0

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

11

Как написать запрос в Oracle, игнорируя регистр сравниваемых строк? Например, чтобы строки "angel", "Angel", "ANGEL", "angel" и "AngEl" считались равными при сравнении.

5 ответ(ов)

0

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

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

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

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

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

0

Если вы хотите сопоставить полное значение поля, используйте следующий запрос:

WHERE UPPER(fieldName) = 'ANGEL'

EDIT: Судя по вашему комментарию, вы хотите использовать следующий запрос:

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

Обратите внимание, что в данном случае для фильтрации по имени клиента применён оператор LIKE, который позволяет находить записи, содержащие подстроку "SPORT" в любом регистре. Если вам нужно именно точное соответствие, замените LIKE на =.

0

Для того чтобы сравнивать две или более строки без учета регистра, сначала выполните следующие команды:

ALTER SESSION SET NLS_COMP=LINGUISTIC;
ALTER SESSION SET NLS_SORT=BINARY_CI;

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

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

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

0

Функция STRCMP в SQL сравнивает две строки и возвращает числовое значение, указывая их отношение:

SELECT STRCMP("string1", "string2");

В зависимости от результата сравнения:

  • Если string1 равно string2 (игнорируя регистр), функция вернёт 0.
  • Если string1 меньше string2, функция вернёт -1.
  • Если string1 больше string2, функция вернёт 1.

Таким образом, эту функцию можно использовать для определения порядка строк в вашей базе данных. Подробную информацию можно найти на W3Schools.

0

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь