2013-04-18 19 views
77


,我有以下數據PriceOrderShipped
PriceOrderShippedInbound
PriceOrderShippedOutbound

在SQL我需要編寫一個查詢其搜索在表中的字符串。搜索字符串時應忽略大小寫。對於下文提到的SQL查詢SQL-忽略的情況下,同時尋找在表 <br/>字符串

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)作爲最佳實踐。谷歌「土耳其我」 – 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

它沒有工作我收到SQL查詢沒有正確結束之前Collat​​e – shockwave

+0

對不起,我已經更新了我的答案。 –

+0

@米格爾-F ..它工作正常,但它是如何從不同 SELECT DISTINCT COL_NAME FROM mytable的 WHERE COL_NAME LIKE「%priceorder%」 因爲這也是工作的罰款對我.. – Ancee

相關問題