SQL-игнорировать регистр при поиске строки



у меня есть следующие данные в таблице
PriceOrderShipped
PriceOrderShippedInbound
PriceOrderShippedOutbound

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

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%' 

дает все вышеперечисленные данные, тогда как

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%' 

не дает.

например. когда я ищу 'PriceOrder' или 'priceOrder' это работает, но "priceorder" или "Priceorder" не работает. Я пробовал с приведенным ниже запросом, используя COLLATE, но он не работает. Дайте мне знать, где я иду не так.

SELECT DISTINCT COL_NAME FROM myTable WHERE 
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'
4 86

4 ответа:

использовать что-то вроде этого -

SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')

или

SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')

посмотреть этот же вопрос и ответ на поиск с Регистра - SQL server игнорирует регистр в выражении where

попробуйте использовать что-то вроде:

SELECT DISTINCT COL_NAME 
FROM myTable 
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%'

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

вы можете увидеть список сортировки здесь.

Я хорошая.

такой.

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME iLIKE '%Priceorder%'

в postgresql.