【发布时间】:2019-12-11 17:06:08
【问题描述】:
如果 SQL Server 设置为将 - (U+002D) 和 - (U+FF0D) 视为同一事物,即
SELECT
CASE WHEN 'AB-CD' = 'AB-CD'
THEN 'SAME'
ELSE 'DIFFERENT'
END
会产生“SAME”,有没有办法让它区分这些(通常是所有)字符,即产生“DIFFERENT”?
我无法更改整个环境的设置。
我知道有一个选项可以让一个特定的 SQL 比较区分大小写,即使一般设置不区分大小写,通过声明
SELECT
CASE WHEN 'A' = 'a' COLLATE SQL_Latin1_General_CP1_CS_AS
THEN 'SAME'
ELSE 'DIFFERENT'
END
是否有类似的“技巧”让 SQL 对不同的特殊字符“敏感”?
【问题讨论】:
-
“是否有类似的“技巧”让 SQL 对不同的特殊字符“敏感”?” 不,排序规则要么区分大小写,要么区分大小写或 不区分大小写。它不能有点区分大小写和有点不敏感。这是一个或另一个。
-
这些字符是不同大小的连字符。这与区分大小写无关。 collation 决定这两个连字符是否被认为是相同的。大多数人会认为它们是一样的。如果您不想这样,请改用二进制排序规则,例如
Latin1_General_100_BIN2 -
顺便说一句,所有
SQL_和_BIN排序规则都被视为已弃用。 -
@panagiotis-kanavos; @拉努;我知道答案,因为我生活在一个 Unicode 国家。
-
@XAMT 每个人都生活在 Unicode 国家 - 这些字符在美国的行为相同。事实上,它们首先出现在美国创建的文字处理器中。
标签: sql sql-server special-characters