我如何获得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