高手请进!谁能帮我解释一下SQL多语言问题,关于varchar,nvarchar

wangjiamin wangjiamin 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[mdata]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[mdata]
GO

CREATE TABLE [dbo].[mdata] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[nname] [nvarchar] (8) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

--------比较nvarchar 和 varchar长度问题-------------
--"业务类型d" 太长,失败
--insert mdata(name,nname) values(N'业务类型d','业务类型')
-- succeed
insert mdata(name,nname) values(N'业务类型','业务类型业务类型')


-------比较SQL拼写对数据影响问题---------------------
insert mdata(name,nname) values('业务类型','业务类型')
insert mdata(name,nname) values('业务类型',N'业务类型')
insert mdata(name,nname) values(N'业务类型','业务类型')
insert mdata(name,nname) values(N'业务类型',N'业务类型')
insert mdata(name,nname) values('YWLXYWLX','YWLXYWLX')

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``
--虽然第一个name字段是varchar,和第二个字段是nvarchar,上面5个insert语句都能成功
--且下面的比较查询语句也都能查处上面的值。
--
--谁解释一下在sql中存的是什么码(varchar,nvarchar),
--在下面的查询语句中能查询出认为内容(好像和编码无关),SQL语句又是在什么时候被处理的。
--我用的是中文SQL2000,其他环境也会这样么?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~``

select * from mdata where name = nname
select len(name), len(nname) from mdata where name = nname

select * from mdata where name = N'业务类型'
select * from mdata where nname = '业务类型'

...全文

相关推荐

SQL Server数据类型char、nchar、varchar、nvarchar的区别浅析

在SQL Server中,当我们设置字符型字段的时候,往往有很多个数据类型供我们选择,如:char nchar varchar nvarchar等,那么我们到底应该选择哪一个呢?下面就一一来描述其区别。 char:固定长度,非Unicode字符数据,长度为n个字节。n的取值范围为1至8,000,存储大小是n个字节。char的SQL2003同义词为character。 varchar:可变长度,非Unicode字符数据。n的取值范围为1至8,000。max指示最大存储大小是2^31-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。SQL-2003中的varcha

weixin_38747566

基于SQL Server中char,nchar,varchar,nvarchar的使用区别

对于程序中的一般字符串类型的字段,SQL Server中有char、varchar、nchar、nvarchar四种类型来对应,那么这四种类型有什么区别呢,这里做一下对比。 1.定长或变长 所谓定长就是长度固定,当要保存的数据长度不够时将自动在其后面填充英文空格,使长度达到相应的长度;有var前缀的,表示是实际存储空间是动态变化的,比如varchar,nvarchar变长字符数据则不会以空格填充。 2.Unicode或非Unicode 数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取

weixin_38595606

Sqlserver中char,nchar,varchar与Nvarchar的区别分析

Sqlserver中char,nchar,varchar与Nvarchar的区别分析,使用sqlserver的朋友可以参考下。

weixin_38715879

char、varchar、nchar、nvarchar四种类型的区别

char、varchar、nchar、nvarchar四种类型的区别char、varchar、nchar、nvarchar四种类型的区别

EterFoolMe

SQL Server中,varchar和nvarchar如何选择?

varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节。   正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar会出现乱码(显示为??)。而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据

weixin_38600432
评论 6
收藏 已收藏
分享
返回顶部
wangjiamin
应用实例 27,579 成员 68,540 内容