如何识别SQL中的大写和小写单词?

时间:2013-02-26 23:18:19

标签: sql-server tsql

我们需要以某种方式区分ALL CAPITAL LETTER WORD和Title word,例如:

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

首都词是指城市,标题词是指国家。

我们一直在寻找其他专栏来区分这些事情,但这是我们能够提出的情感因素。

2 个答案:

答案 0 :(得分: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 :(得分:1)

标识城市,检查文本是否与UPPER值相同:

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

请注意,正如Aaron Bertrand正确指出的那样,这取决于整理。

相关问题