gpt4 book ai didi

sql - 如何在 SQL 中处理 Unicode 替换字符 � (0xFFFD/65533)

转载 作者:行者123 更新时间:2023-12-02 19:05:31 26 4
gpt4 key购买 nike

一周前我什至都不知道 Unicode 替换字符 (�) 的存在。现在我了解到至少在 SQL 中似乎有一些非常特殊和奇怪的逻辑围绕着它。例如:

select replace(N'bl' + NCHAR(65533) + N'rt', NCHAR(65533), N'X')

返回 bl�rt 而不是 blXrt。并且:

select CHARINDEX(NCHAR(65533), N'b' + NCHAR(65533) + N't')

返回 0 而不是 2。我只是想确定表中的哪些字符串包含此字符,但我找不到直接的方法来执行此操作。这个角色的处理如此奇怪,一定还有更多我可以学习的地方。行为在哪里定义,更具体地说,在 MS SQL Server 数据库中查找包含此字符的字符串的最简单方法是什么?

编辑对于任何尝试答案的人,我建议使用以下数据测试您的答案:

create table Test([Value] nvarchar(100) not null)
insert into Test([Value]) values('b' + NCHAR(65533) + 't')
insert into Test([Value]) values('b?t')
insert into Test([Value]) values('bat')

最佳答案

Krzysztof Kozielczyk 写道,有效的 unicode 字符需要转换为二进制字符串才能进行替换,因此这可能是您最初问题的答案。

SELECT REPLACE(N'test' + NCHAR(65533) 
COLLATE Latin1_General_BIN, NCHAR(65533) COLLATE Latin1_General_BIN, '')

上面的代码还指出了如何查找具有有效 unicode 字符的字符串,但它是一种解决方法,而不是解决方案。 source

关于sql - 如何在 SQL 中处理 Unicode 替换字符 � (0xFFFD/65533),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com