gpt4 book ai didi

sql-server - 无法更新包含特殊字符的 varchar 列

转载 作者:行者123 更新时间:2023-12-02 22:42:05 25 4
gpt4 key购买 nike

最初我认为这个问题与 C# TransactionScopeDapper.NET 有关。但由于我已经在 SSMS 中测试了 sql,问题仍然存在,我认为这是一个纯粹的 sql 问题。

这是(简化的)更新,应更新 varchar(40) 列。我没有收到任何错误,行数为 1。旧的 SparePartDescriptionEC801/|USB/Exch Acc/JP/PE bag:

declare @rowCount int  

UPDATE [tabSparePart] SET
[SparePartDescription] = 'EC801/╡USB/Exch Acc/JP/PE bag'
WHERE ([idSparePart] = 13912)

set @rowCount = @@ROWCOUNT
select @rowCount

所以唯一的区别是这些特殊字符:

也许您知道为什么我无法更新此专栏。

最佳答案

那么,您正在使用的特殊字符:


不支持 ASCII。请参阅:

DECLARE @x VARCHAR(32) = 'EC801/╡USB/Exch Acc/JP/PE bag';
SELECT @x;

结果:

EC801/¦USB/Exch Acc/JP/PE bag

因此,从技术上讲,更新工作正常,只是没有执行您想要的操作,因为为了适应 ASCII 空间,它必须将您的字符替换为有效的字符。

为了支持该字符,您的列必须使用 Unicode(也许还有特定的排序规则,我不确定)。这工作正常:

DECLARE @x NVARCHAR(32) = N'EC801/╡USB/Exch Acc/JP/PE bag';
SELECT @x;

结果:

EC801/╡USB/Exch Acc/JP/PE bag

在包含此类字符的字符串文字上指定 N 前缀非常重要...

关于sql-server - 无法更新包含特殊字符的 varchar 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18136935/

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