我们需要以某种方式区分所有大写字母词与标题词,例如:
[Column 1]
Kenya
MELBOURNE
Japan
SYDNEY
CANBERRA
WOLLONGONG
United States
United Kingdoms
大写单词表示城市,标题单词表示国家。
我们一直在寻找其他专栏来区分这些东西,但这是我们可以想出的情感专栏。
我们需要以某种方式区分所有大写字母词与标题词,例如:
[Column 1]
Kenya
MELBOURNE
Japan
SYDNEY
CANBERRA
WOLLONGONG
United States
United Kingdoms
大写单词表示城市,标题单词表示国家。
我们一直在寻找其他专栏来区分这些东西,但这是我们可以想出的情感专栏。
哇,区分两种不同类型的事实真是太糟糕了。
无论如何,您可以通过将列更改为区分大小写或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
要识别城市,请检查文本是否与其UPPER
值相同:
select * from table
where [Column 1] = UPPER([Column 1]) COLLATE Latin1_General_CS_AI
请注意,正如 Aaron Bertrand 正确指出的那样,这取决于整理。