这些症状看起来像应用程序插入数据库时问题行的值被编码为Unicode。T-SQL示例:
CREATE TABLE dbo.YourTable(ResponseInfo text);
DECLARE @UnicodeValue nvarchar(MAX) = N'{"result":"Status:U-OK","hasError":false,"errorDetails":null}';
DECLARE @BinaryValue varbinary(MAX) = CAST(@UnicodeValue AS varbinary(MAX));
DECLARE @VarcharValue varchar(MAX) = CAST(@BinaryValue AS varchar(MAX));
INSERT INTO dbo.YourTable VALUES(@VarcharValue);
SELECT ResponseInfo
FROM dbo.YourTable;
您可以检查原始值以验证:
SELECT CAST(ResponseInfo AS varbinary(MAX))
FROM dbo.YourTable;
如果数据编码不正确,您可以使用如下更新查询来纠正错误。确保只针对问题行。
UPDATE dbo.YourTable
SET ResponseInfo = CAST(CAST(CAST(CAST(ResponseInfo AS varchar(MAX)) AS varbinary(MAX)) AS nvarchar(MAX)) AS varchar(MAX))
WHERE <problem-row-criteria-here>;
当然,您需要修复应用程序以避免将来出现问题。虽然与你的问题无关,但最好使用
varchar(MAX)
或
nvarchar(MAX)
而不是被否决的
text
数据类型。