获取作为varchar插入的nvarchar记录



我如何获得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',后来变成胡言乱语,并修复它。

不能,因为在插入表时被转换为?。原始数据已经消失。一个字面值字符串被创建为VARCHAR,除非你在它前面加上N

您可以使用下面的查询来查找只有ASCII字符的行。

关于查找非ascii字符的参考文章

-- > 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

相关内容

  • 没有找到相关文章

最新更新