对于中文版的SQL SERVER,默认安装后使用的默认排序规则为Chinese_PRC_CI_AS,在此排序规则下,使用varchar类型来可以“正常存取”存放中文字符以及一些东南亚国家的字符,
同时varchar类型在存放英文字符和数字时比nvarchar节省一半的存储空间,因此很多DBA都习惯使用varchar类型来存放字符数据,但这样便存在一些乱码隐患!
首先是特殊字符如上下标或版权字符,测试Code如下:
CREATE TABLE [dbo].[Chars](
[Id] [int] IDENTITY(1,1) primary Key NOT NULL,
[Char1] [nvarchar](60) NULL,
[Char2] [varchar](60) NULL
)
GO
1、加N插入数据:
--加N 情况 INSERT INTO [Chars](Char1,Char2) SELECT N'M²',N'M²'
2、查询结果
3、不加N插入数据
--不加N情况 INSERT INTO [Chars](Char1,Char2) SELECT 'M²','M²'
4、查询结果