1

我们需要以某种方式区分所有大写字母词与标题词,例如:

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

大写单词表示城市,标题单词表示国家。

我们一直在寻找其他专栏来区分这些东西,但这是我们可以想出的情感专栏。

4

2 回答 2

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
于 2013-02-26T23:24:57.457 回答
1

要识别城市,请检查文本是否与其UPPER值相同:

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

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

于 2013-02-26T23:21:11.207 回答