2013-04-18 4 views
77


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

В SQL Мне нужно написать запрос, который ищет строку в таблице. При поиске строки он должен игнорировать регистр. Для указанной ниже 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%' 

ответ

146

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

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%') 
+12

Я думаю, что вы всегда должны сравнивать строки заглавных (UPPER) в качестве лучшей практики. Google "turkish i" – Traubenfuchs

5

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

Вы можете просмотреть список сортировок here.

6

Смотрите этот же вопрос и ответ на поиск с нечувствительности к регистру - SQL server ignore case in a where expression

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

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

it din't work Я получаю SQL-запрос, который не был правильно закончен до Collate – shockwave

+0

Извините, я обновил свой ответ. –

+0

@ Мигель-F .. он работает хорошо, но как же она отличается от SELECT DISTINCT COL_NAME ОТ MYTABLE ГДЕ COL_NAME LIKE «% priceorder%» , потому что это также работает хорошо для меня .. – Ancee