欢迎来到天天文库
浏览记录
ID:34726108
大小:55.13 KB
页数:5页
时间:2019-03-10
《sql中n的前缀的意思》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于SQLSERVER的N前缀的理解加N前缀指定后面的字符串为UNICODE常量,SQLServer的Unicode数据类型是基于SQL-92标准中的国家字符数据类型。SQL-92使用前缀字符N标识这些数据类型及其值。1,Unicode数据使用SQLServer中的nchar、varchar和ntext数据类型进行存储。对于存1储来源于多种字符集的字符的列,可采用这些数据类型。当列中各项所包含的Unicode字符数不同时(至多为4000),使用nvarchar类型。当列中各项为同一固定长度时(至多为4000个Unicode字符),使用nchar类型。当列中任意项超过4000
2、个Unicode字符时,使用ntext类型。在MicrosoftSQLServer2000中,传统上非Unicode数据类型允许使用由特定字符集定义的字符。字符集是在安装SQLServer时选择的,不能更改。使用非Unicode数据类型存储数据时,如varchar,char,text等,如果未指定字符排序序列时(字符集),使用默认的字符集,即使为某个字段指定了字符排序序列时,如果SQLServer默认的排序序列与指定字段的排序序列不同时,不加N的话也会产生乱码,如默认的字符集是单字节的字符集如拉丁字符集(Collationname为Latin1_General_CI_AS)
3、的时候,如果定义Name为Varchar类型,字符集为中文字符集时(Collationname为Chinese_PRC_CI_AS),用如下的插入语句也会乱码inserta(name)values('AA中'),因为数据插入的时候,默认还是用Latin1_General_CI_AS字符集送到服务器,再转换为Collationname为Chinese_PRC_CI_AS时,产生乱码,但如果改为如下的时候:inserta(name)values(N'AA中')则能正确插入,因为通过N前缀,以UNICODE的形式送到SQLSERVER,然后再转换成Chinese_PRC_CI_A
4、S时,就不会产生乱码。2,UNICODE和非UNICODE之间的转换2-1UNICODE--〉非UNICODE:Convert(varchar(50),nameCollateChinese_PRC_CS_AS_KS_WS)--name是nvarvhar类型的,如name是'AA中'的时候SelectDATALENGTH(Convert(varchar(50),nameCollateChinese_PRC_CS_AS_KS_WS))fromx,返回的长度为4(UNICODE的时候为6)2-2非UNICODE--〉UNICODE的时候:Convert(nvarchar(50),
5、name)--name是varchar类型的时候如name是'AA中'的时候SelectDATALENGTH(Convert(nvarchar(50),name))fromx,返回的长度为6(非UNICODE的时候为4)3,试验归类测试SQL:------------------------------------------------------------droptableacreatetablea(avarchar(2))insertintoavalues('a')insertintoavalues(N'a')insertintoavalues('深圳')inser
6、tintoavalues(N'深圳')selecta,len(a),datalength(a)fromadroptable#acreatetablea(avarchar(2))insertinto#avalues('a')insertinto#avalues(N'a')insertinto#avalues('深圳')insertinto#avalues(N'深圳')selecta,len(a),datalength(a)from#a------------------------------------------------------------droptableacr
7、eatetablea(avarchar(8000))insertintoaselectREPLICATE('a',8000)insertintoaselectREPLICATE('深',8000)insertintoaselectREPLICATE(N'a',8000)insertintoaselectREPLICATE(N'深',8000)selecta,len(a),datalength(a)froma3-1.字符集是支持双字节的字符集如中文字符集(Collationname为Chinese_PRC_CI_AS
此文档下载收益归作者所有