码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-07-11 18:46:09      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

 

 

函数语句

DATALENGTH

READTEXT

PATINDEX

SET TEXTSIZE

SUBSTRING

UPDATETEXT

TEXTPTR

WRITETEXT

TEXTVALID

 

 

 

 

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

建立表,填充数据:

if exists (select * from sysobjects where id = OBJECT_ID(‘[asdf]‘) and OBJECTPROPERTY(id, ‘IsUserTable‘) = 1)

DROP TABLE [asdf]

CREATE TABLE [asdf] (

[inttest] [int] IDENTITY (1, 1) NOT NULL ,

[text] [text] NULL ,

[varcharmax] varchar(max) NULL )

ALTER TABLE [asdf] WITH NOCHECK ADD CONSTRAINT [PK_asdf] PRIMARY KEY NONCLUSTERED ( [inttest] )

 

SET IDENTITY_INSERT [asdf] ON

 

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

 

SET IDENTITY_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 SQL2005及以上的版本中,加入大值数据类型(varchar(max)、nvarchar(max)、varbinary(max) )。大值数据类型最多可以存储2^30-1个字节的数据。

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

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

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

nvarchar(max)-----ntext;

varbinary(max)----image.

 

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

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

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

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

标签:

原文地址:http://www.cnblogs.com/liangjiang/p/5660902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!