300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SQL Server中Text和varchar(max)数据类型区别

SQL Server中Text和varchar(max)数据类型区别

时间:2020-08-23 00:02:35

相关推荐

SQL Server中Text和varchar(max)数据类型区别

SQL Server中Text和varchar(max)数据类型区别

以前只知道text和image是可能被SQL Server淘汰的数据类型,但具体原因不太清楚,今天读书的时候发现了text与varchar(max)和nvarchar(max)的区别,主要是对操作符的限制,text只能被下列函数作用:

举个列子,如果“文本”这一列的数据类型为text,那么它将不能用于“=”“left()”等操作,比如下面的例子:

建立表,填充数据:

ifexists(select*fromsysobjectswhereid=OBJECT_ID('[asdf]')andOBJECTPROPERTY(id,'IsUserTable')=1)

DROPTABLE[asdf]

CREATETABLE[asdf](

[inttest] [int]IDENTITY(1,1)NOTNULL,

[text] [text]NULL,

[varcharmax]varchar(max)NULL)

ALTERTABLE[asdf]WITHNOCHECKADDCONSTRAINT[PK_asdf]PRIMARYKEYNONCLUSTERED([inttest])

SETIDENTITY_INSERT[asdf]ON

INSERT[asdf]([inttest],[text],[varcharmax])VALUES(1,'1111111','1111111')

SETIDENTITY_INSERT[asdf]OFF

运行查询:

查询一:

SELECT[text]

,[varcharmax]

FROM[testDB].[dbo].[asdf]

where

[text]='11111'AND

[varcharmax]='1111111'

会出现以下错误提示:

消息402,级别16,状态1,第1行

数据类型text和varchar在equal to运算符中不兼容。

查询二:

SELECT[text]

,[varcharmax]

FROM[testDB].[dbo].[asdf]

where

[varcharmax]='1111111'

可以成功运行

在MS SQL及以上的版本中,加入大值数据类型(varchar(max)、nvarchar(max)、varbinary(max) )。大值数据类型最多可以存储2^30-1个字节的数据。

这几个数据类型在行为上和较小的数据类型varcharnvarcharvarbinary相同。

微软的说法是用这个数据类型来代替之前的textntextimage数据类型,它们之间的对应关系为:

varchar(max)-------text;

nvarchar(max)-----ntext;

varbinary(max)----image.

有了大值数据类型之后,在对大值数据操作的时候要比以前灵活的多了。比如:之前text是不能用‘like’的,有了varchar(max)之后就没有这些问题了,因为varchar(max)在行为上和varchar(n)上相同,所以,可以用在varcahr的都可以用在varchar(max)上。

另外,这个还支持对插入的删除的表中的大值数据类型列引用上使用 AFTER 触发器。text就不行,总之,用了大值数据类型之后,我是“腰也不疼了,腿也不酸了,一口气也能上六楼了”。还等什么呢,快用大值类型吧。

原著:/jhxk/articles/1633578.html 注意:本文只是为了本人以后的方便而存在了这里,若有著作权问题,请联系本人将该文删除。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。