Unicode数据丢失 - 归因于整理变化?

时间:2012-07-25 18:47:18

标签: sql sql-server collate

我有一张排名为Thai_CI_AS的表,它没有正确存储像à这样的特殊字符。 存储à时,它会呈现为问号:?

我已经通过将该表的排序规则更改为默认值latin *来解决了这个问题。

现在正确存储新数据(特殊字符)。

但旧数据仍会显示???

如何刷新或调用任何内容以使旧数据正确显示?

-----编辑-------

是否有一个SQL查询允许用户将所有?更改为à之类的其他内容?

实施例

 ?sometext?
 ??sometext??
 ?????
 sometext??

然后全部转到

 àsometextà
 àsometextà
 ààààà
 sometextàà

谢谢你, 以下列是包含这些类型数据的列,

 id_name1, id_name2, id_name3.

请帮忙。非常感谢你。

2 个答案:

答案 0 :(得分:2)

我很遗憾地说,但你的旧数据已经消失了。我不认为这是因为整理;它可能是因为你这样做了:

INSERT dbo.table(column) SELECT 'à';

而不是使用N字符正确添加Unicode数据前缀:

INSERT dbo.table(column) SELECT N'à';
---- this is important ---------^

但同样,没有得到旧的数据......你甚至自己说过,当你在泰国整理下存储数据时,它显示? - 这意味着数据从未在第一次正确存储地点(很可能是因为缺少N)。

答案 1 :(得分:0)

如果此问题与您的previous question有关,则答案为是。

VARCHAR列仅包含单字节字符。在您的情况下,您应该将VARCHAR列更改为NVARCHAR,然后更改列的排序规则。