TRANSLATE() 函数区分大小写和优先级问题

问题描述 投票:0回答:1
SELECT TRANSLATE('NEE', 'Ee', 'Ee')
--NEE
SELECT TRANSLATE('NEE', 'eE', 'eE')
--Nee
SELECT TRANSLATE('NÉE', 'Éé', 'Ee')
--NEE
SELECT TRANSLATE('NÉE', 'éÉ', 'eE')
--NeE

如何防止不同大小写字符的匹配?在上面的例子中,小写字符的输出不是我所期望的。

sql-server translate case-sensitive
1个回答
0
投票

对于区分大小写的函数调用,最简单的方法是使用区分大小写的排序规则。

测试脚本:

SELECT  TRANSLATE('NEE', 'Ee', 'Ee')
,   TRANSLATE('NEE', 'eE', 'eE')
,   TRANSLATE('NÉE', 'Éé', 'Ee')
,   TRANSLATE('NÉE', 'éÉ', 'eE')
,   TRANSLATE('NEE', 'Ee' collate latin1_general_cs_as, 'Ee' collate latin1_general_cs_as)
,   TRANSLATE('NEE', 'eE' collate latin1_general_cs_as, 'eE' collate latin1_general_cs_as)
,   TRANSLATE('NÉE', 'Éé' collate latin1_general_cs_as, 'Ee' collate latin1_general_cs_as)
,   TRANSLATE('NÉE', 'éÉ' collate latin1_general_cs_as, 'eE' collate latin1_general_cs_as)

输出:

(第 1 栏) (第2栏) (第3栏) (第 4 栏) (第5栏) (第6栏) (第7栏) (第8栏)
NEE NEE NeE NEE NEE NEE NEE
© www.soinside.com 2019 - 2024. All rights reserved.