gpt4 book ai didi

sql-server - ValidateRequest 故障或 SQL Server Bug?

转载 作者:行者123 更新时间:2023-12-03 09:59:26 25 4
gpt4 key购买 nike

我正在读这个article .它说:

That character is represented at the value %uff1c. If this value is passed to a varchar field in a SQL database, it will get converted to the real < character. I have not seen this work on a nvarchar field

好吧,我认为这是一个 SQL Server 错误,而不是 ValidateRequest hack!如果我写 %uff1c,SQL Server 必须将它保存为 %uff1c。或者,至少,它应该用管理员选择的字符集“再次”编码 %uff1c

我错了吗?

最佳答案

这不是错误,而是功能(但您不能使用它)。

文章的重点是:如果你想发布一个包含“<”的字符串,将每个 < 转换为 <(Unicode 代码点 FF1C)以避免验证错误。

SQL Server 收到一个包含< 的Unicode 字符串并尝试处理它。如果表列或过程参数的数据类型启用了 Unicode(NCHAR、NVARCHAR、每个字符 2 个字节),则不会发生任何转换,SQL Server 将存储原始值。

但是,如果将值传递给 VARCHAR(每个字符 1 个字节)列或变量,字符 <(2 字节代码点)将转换为 <。扩展AakashM的代码来说明:

DECLARE @nv nvarchar, @v varchar
SET @nv = N'<'
SET @v = '<'
SELECT @nv, @v, CONVERT(varchar, @nv)

< < <

但是,由于这是 21 世纪,数据库应该能够支持每一种标准化的语言、符号和字符,所以很少有场景可以证明使用 VARCHAR 数据是合理的。

关于sql-server - ValidateRequest 故障或 SQL Server Bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009177/

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