gpt4 book ai didi

sql - 无法通过 SQL 查询替换 Char(63)

转载 作者:行者123 更新时间:2023-12-04 06:21:58 24 4
gpt4 key购买 nike

我在表中有一些具有一些不寻常字符的行。当我对那个字符使用 ascii() 或 unicode() 时,它返回 63。但是当我尝试这个时 -

update MyTable
set MyColumn = replace(MyColumn,char(63),'')

它不会取代。替换功能后异常字符仍然存在。顺便说一句,Char(63) 看起来像一个问号。

例如,我的字符串是 'ddd#dd ddd',其中 # 这是我的不寻常字符,并且
select unicode('#')

还给我 63.但是这个代码
declare @str nvarchar(10) = 'ddd#dd ddd'
set @char = char(unicode('#'))
set @str = replace(@str,@char,'')

正在工作!

任何想法如何解决这个问题?

附加信息:
select ascii('�')返回 63, select ascii('?') 也是如此.最后 select char(63)返回 ?而不是钻石问号。

当这个字符被粘贴到 Excel 或文本编辑器中时,它看起来像一个空格,但在 SQL Server 查询窗口中(显然,在 StackOverflow 上也是如此),它看起来像一个包含问号的菱形。

最佳答案

char(63) 不仅看起来像一个 '?',它实际上是一个 '?'。

(作为一个简单的测试,确保您的键盘上有 numlock,按住 alt 键并在数字键盘中输入“63” - 您可以通过这种方式获得各种乐趣,尝试 alt-205,然后是 alt-206 和 alt-205再次:=╬=)

'?' 可能是但是,您看到的不是 char(63),而是 SQL Server 不知道如何显示的字符。

运行时你会得到什么:

select ascii(substring('[yourstring]',[pos],1));
--or
select unicode(substring('[yourstring]',[pos],1));

哪里 [yourstring]是您的字符串和 [pos]是你的字符在字符串中的位置

编辑

从您的评论来看,这似乎是一个问号。你有没有尝试过:
replace(MyColumn,'?','') 

编辑2

出于兴趣,以下对您有什么作用:
replace(replace(MyColumn,char(146),''),char(63),'')

关于sql - 无法通过 SQL 查询替换 Char(63),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6441208/

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