2013-02-26 231 views
1

我們需要以某種方式全大寫字母的單詞VS標題詞來區分,例如:如何識別TSQL中的大寫字母和小寫字母?

[Column 1] 
Kenya 
MELBOURNE 
Japan 
SYDNEY 
CANBERRA 
WOLLONGONG 
United States 
United Kingdoms 

資本詞的意思城市和標題詞的意思國家。

我們一直在尋找其他專欄來區分這些東西,但這是我們可以想出的情感。

+3

庵。不是一個混蛋,但爲什麼你會用案例來確定一個詞的含義?添加一列或將它們存儲在不同的表中:p – Scotch 2013-02-26 23:27:48

+0

我們只分析數據。它最初是這樣來的。 :) – dcpartners 2013-02-26 23:34:42

回答

5

哇,區分兩種不同類型的事實是一種可怕的方式。

反正你可以通過改變列區分大小寫,或使用每個比較COLLATE子句進行區分大小寫的比較:

DECLARE @x TABLE(c VARCHAR(255)); 

INSERT @x VALUES 
('Kenya'), 
('MELBOURNE'), 
('Japan'), 
('SYDNEY'), 
('CANBERRA'), 
('WOLLONGONG'), 
('United States'), 
('United Kingdom'); 

SELECT city = CASE 
    WHEN c = UPPER(c) COLLATE Latin1_General_BIN 
    THEN c ELSE NULL END, 
    country = CASE 
    WHEN c <> UPPER(c) COLLATE Latin1_General_BIN 
    THEN c ELSE NULL END 
FROM @x; 

結果:

city   country 
---------- -------------- 
NULL   Kenya   
MELBOURNE NULL 
NULL   Japan   
SYDNEY  NULL 
CANBERRA  NULL 
WOLLONGONG NULL 
NULL   United States 
NULL   United Kingdom 
1

識別城市,檢查文本是相同的,因爲它的UPPER值:

select * from table 
where [Column 1] = UPPER([Column 1]) COLLATE Latin1_General_CS_AI 

需要注意的是,亞倫貝特朗正確地指出,這是依賴於整理。

+1

如果排序規則不區分大小寫,SQL Server會將它們視爲相同。 – 2013-02-26 23:21:54

+0

我認爲它確實認爲它們是相同的。他可能需要爲此寫一個函數。 – Scotch 2013-02-26 23:22:35

相關問題