【发布时间】:2021-10-26 08:14:55
【问题描述】:
如何获取 NVARCHAR 列的所有值,其中一些值被意外插入而没有使用 N 前缀,因此被替换为 ?,然后将这些值更改为正确的形式?
例如,如果我有以下情况:
CREATE TABLE #Test
(
Value nvarchar(max)
)
INSERT INTO #Test(Value) values(N'иытание1')
INSERT INTO #Test(Value) values('иытание2')
INSERT INTO #Test(Value) values(N'иытание3')
SELECT * FROM #Test
输出:
Value
-------
иытание1
????????2
иытание3
我想得到最初的'иытание2',后来变成了乱码,并修复它。
【问题讨论】:
-
你不能。
?不是占位符;它是最初转换字符串时使用的实际替换字符(在存储到列中之前,转换为数据库默认排序规则)。您可以使用SELECT CONVERT(VARBINARY(MAX), Value) FROM #Test更清楚地看到这一点;3F00是?的代码点。 -
您使用的是哪个 dbms?上述这种奇怪的行为是特定于产品的。
-
@jarlh Sql Server,谢谢,我加了标签
标签: sql sql-server unicode nvarchar