我有一列设置为Varchar,数据库设置为SQL_Latin1_General_CP1_CI_AS。
当用户在我们的Web前端中输入他们的名字并保存数据时,它没有正确保存带重音符号。
网络用户正在输入以下内容“Béala”,但已将其作为以下内容“Béala”保存在数据库中。
我相信将列从Varchar更改为NVarchar应该可以防止这种情况继续发生?但是,我有两个问题。
1)如何对列中的现有数据执行选择并正确显示?
select CONVERT(NVARCHAR(100),strAddress1) from [dbo].[tblCustomer]
这仍然显示不正确的数据。
2)转换为NVarchar后,如何更新列中的数据以正确保存重音符号?
非常感谢, 雷。
答案 0 :(得分:0)
我想到的唯一想法是,您必须准备一个更新,该更新将愚弄这些不良加载的数据(即标志) “é”将始终完全匹配一个字符(在这种情况下为“é”),您必须捕获所有特殊字符,并且 如已更改(只是一个简单的案例更新和替换)。当然,第一列必须是nvarchar类型。 它解决了问题1和2(表中的数据正确,数据将正确显示,我在上面描述了更新)
答案 1 :(得分:-1)
这是在普通字符模式下获取它的方法。
select 'Réunion', cast('Réunion' as varchar(100)) COLLATE SQL_Latin1_General_CP1253_CI_AI
此外,要检查SQL Server中所有可能的归类,您可以尝试此查询
SELECT name, description
FROM sys.fn_helpcollations();