获取作为 varchar 插入的 nvarchar 记录

Get nvarchar records that were inserted as varchar

如何获取 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'后来变成乱码的东西,并修复它。

你不能,因为它在插入 table 时 转换?。原来的数据没了。文字字符串创建为 VARCHAR 除非您在其前面加上 N.

您可以使用以下查询找出仅包含 ASCII 字符的行。

Reference SO post on finding non-ascii characters

-- > 0 means NON-ASCII characters are present
-- = 0 means only ASCII characters are present
SELECT * FROM #TEST 
WHERE
patindex('%[^ !-~]%' COLLATE Latin1_General_BIN,VALUE) = 0 

????????2