SQL Server中Text和varchar(max) 区别
SQL Server 2005之后版本:请使用 varchar(max)、nvarchar(max) 和 varbinary(max) 数据类型,而不要使用 text、ntext 和 image 数据类型。
Microsoft SQL Server 2005 中引入了 max 说明符。此说明符增强了 varchar、nvarchar 和 varbinary 数据类型的存储能力。varchar(max)、nvarchar(max) 和 varbinary(max) 统称为大值数据类型。您可以使用大值数据类型来存储最大为 2^31-1 个字节的数据。
以前只知道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个字节的数据。
这几个数据类型在行为上和较小的数据类型 varchar、nvarchar 和 varbinary 相同。
微软的说法是用这个数据类型来代替之前的text、ntext 和 image 数据类型,它们之间的对应关系为:
varchar(max)-------text;
nvarchar(max)-----ntext;
varbinary(max)----image.
有了大值数据类型之后,在对大值数据操作的时候要比以前灵活的多了。比如:之前text是不能用‘like’的,有了varchar(max)之后就没有这些问题了,因为varchar(max)在行为上和varchar(n)上相同,所以,可以用在varcahr的都可以用在varchar(max)上。
最新文章
- 21SpringMvc_异步发送表单数据到Bean,并响应JSON文本返回(这篇可能是最重要的一篇了)
- 绑定线程到特定CPU处理器
- htm5实现视差动画
- groupinfo
- sqlite ef6 踩坑
- Python 迭代器之列表解析与生成器
- 【原创】大叔问题定位分享(27)spark中rdd.cache
- MySQL 安装步骤
- Oracle 11.2.0.4.0 Dataguard部署和日常维护(1)-数据库安装篇
- js记录用户访问页面和停留时间
- Kudu-java数据库简单操作
- iOS - swift项目接入bugly - 报错, 配置符号表,下载Java环境,
- 51nod1019 逆序数
- 同一sql表,在页面展示多级菜单
- 《OpenGL超级宝典》编程环境配置
- 设置跨交换机VLAN
- [转]ViewPager 详解(三)---PagerTabStrip与PagerTitleStrip添加标题栏的异同
- 一款基于的jQuery仿苹果样式焦点图插件
- 使用padding和float处理带有间隙的多块布局
- webpack 打包图片 能否提高加载速度