Sql server 如何识别TSQL中的大写和小写单词?

Sql server 如何识别TSQL中的大写和小写单词?,sql-server,tsql,Sql Server,Tsql,我们需要以某种方式区分所有大写字母和标题词,例如: [Column 1] Kenya MELBOURNE Japan SYDNEY CANBERRA WOLLONGONG United States United Kingdoms 大写的意思是城市,标题的意思是国家 我们一直在寻找其他专栏来区分这些东西,但这是我们可以找到的情感性专栏。要识别城市,请检查文本是否与其值相同: 请注意,正如Aaron Bertrand正确指出的,这取决于排序规则。要识别城市,请检查文本是否与其值相同: 请注意,正

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

[Column 1]
Kenya
MELBOURNE
Japan
SYDNEY
CANBERRA
WOLLONGONG
United States
United Kingdoms
大写的意思是城市,标题的意思是国家


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

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


请注意,正如Aaron Bertrand正确指出的,这取决于排序规则。

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


请注意,正如Aaron Bertrand正确指出的,这取决于排序。

哇,区分两种不同类型的事实是多么糟糕的一种方式

无论如何,您可以通过将列更改为区分大小写,或对每个比较使用
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;

哇,区分两种不同类型的事实真是糟糕透顶

无论如何,您可以通过将列更改为区分大小写,或对每个比较使用
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;

如果排序不区分大小写,SQLServer会认为它们是相同的。我认为它确实是相同的。他可能需要为此编写一个函数。如果排序不区分大小写,SQLServer会认为它们是相同的。我认为它确实是相同的。他可能需要为此编写一个函数。不是说你是个混蛋,但你为什么要用case来确定一个词的意思呢?添加一列或将其存储在不同的表中:pWe仅分析数据。原来是这样的。:)嗯。不是说你是个混蛋,但你为什么要用case来确定一个词的意思呢?添加一列或将其存储在不同的表中:pWe仅分析数据。原来是这样的。:)
city         country
----------   --------------
NULL         Kenya           
MELBOURNE    NULL
NULL         Japan           
SYDNEY       NULL
CANBERRA     NULL
WOLLONGONG   NULL
NULL         United States   
NULL         United Kingdom