SQL SERVER替换函数工作奇数

时间:2016-08-27 10:29:15

标签: sql-server replace

为什么我只得到一个结果?

    select replace(N'2',N'2','X') as Text
    union 
    select replace(N'2',N'²','X') as Text

第二个SELECT语句包括一个平方。

@@ version = Microsoft SQL Server 2012 - 11.0.5623.0

1 个答案:

答案 0 :(得分:3)

行为取决于整理的区分大小写:

SELECT REPLACE(N'2' COLLATE Latin1_General_CS_AS, N'2'  COLLATE Latin1_General_CS_AS,'X'  COLLATE Latin1_General_CS_AS) as Text
UNION 
SELECT REPLACE(N'2' COLLATE Latin1_General_CS_AS, N'²'  COLLATE Latin1_General_CS_AS,'X'  COLLATE Latin1_General_CS_AS) as Text
GO
--results:
X
2
SELECT REPLACE(N'2' COLLATE Latin1_General_CI_AS, N'2'  COLLATE Latin1_General_CI_AS,'X'  COLLATE Latin1_General_CI_AS) as Text
UNION 
SELECT REPLACE(N'2' COLLATE Latin1_General_CI_AS, N'²'  COLLATE Latin1_General_CI_AS,'X'  COLLATE Latin1_General_CI_AS) as Text
GO
--results:
X

如果没有为文字表达式指定排序规则,则使用数据库默认排序规则。