在我的数据库中,我有一个翻译表,其中包含用于将不寻常的 Unicode 字符转换为英文字符的字典。Unicode 字符是该表的主键。前段时间我遇到了一个问题:一些不同的 Unicode 字符对于 T-SQL 是相同的,它们同时等于没有。
我可以找到区分彼此的方法('=' 没用),甚至设法将其中一个插入数据库。但是由于主键约束,我不能插入一个以上,而它们都是相等的。
我只发现了 4 个:Ș ș Ț ț。但是 4 足以破坏我的系统。
这是关于它们如何表现的简短但内容丰富的示例:
DECLARE @Strings TABLE(id int, ucode nvarchar(50))
INSERT INTO @Strings (id, ucode)
SELECT 1, N'A' UNION -- Usual char
SELECT 2, N'Ы' UNION -- Some unicode char
SELECT 3, N'Ф' UNION -- Another unicode char
SELECT 5, N' ' UNION -- space
SELECT 6, N'Ș' UNION -- Unusual unicode char
SELECT 7, N'Ț' UNION -- Unusual unicode char
SELECT 8, N'some_string' UNION -- example string
SELECT 9, N'some_string ' UNION -- example string with space
SELECT 10, N'some_string Ș' UNION -- example string with unusual char
SELECT 11, N'some_string Ț' -- one more
SELECT * FROM @Strings
SELECT * FROM @Strings WHERE ucode = N'A' -- Good one (1 result)
SELECT * FROM @Strings WHERE ucode = N'Ș' -- Magic (3 results)
SELECT * FROM @Strings WHERE ucode = N'Ț' -- Magic (3 results)
SELECT * FROM @Strings WHERE ucode = '' -- Magic (3 results)
SELECT * FROM @Strings WHERE ucode = 'some_string' -- Magic (4 results)
你有什么建议吗?