mysqlvarbinary(max)_SQLServer中Text、varchar(ma。
。。
以前只知道text和image是可能被SQL Server淘汰的数据类型,但具体原因不太清楚,今天读书的时候发现了text与varchar(max)和nvarchar(max)的区别,主要是对操作符的限制,text只能被下列函数作⽤:
函数语句
DATALENGTH
READTEXT
PATINDEX
SET TEXTSIZE
SUBSTRING
UPDATETEXT
TEXTPTR
WRITETEXT
TEXTVALID
举个列⼦,如果“⽂本”这⼀列的数据类型为text,那么它将不能⽤于“=”“left()”等操作,⽐如下⾯的例⼦:
建⽴表,填充数据:
ifexists (select * from sysobjects where id = OBJECT_ID('[asdf]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROPTABLE [asdf]
CREATETABLE [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 KEYNONCLUSTERED ( [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)上。
另外,这个还⽀持对插⼊的和删除的表中的⼤值数据类型列引⽤上使⽤ AFTER 触发器。text就不⾏,总之,⽤了⼤值数据类型之后,我
是“腰也不疼了,腿也不酸了,⼀⼝⽓也能上六楼了”。还等什么呢,快⽤⼤值类型吧。
SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
对SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的⼀些概念⼀直很模糊,最近搜集⼀些资料,汇总如下,以便以后复习:
⼀、char 和varchar的区别和应⽤:
1.char和varchar的区别:
varchar 有指定的最⼤长度,这种类型的数据长度可变,但在最⼤长度之内,如果⼀个string ⽐最⼤长度⼩,那么它将逐字存储⽽不多占额外的空间。
char 是⼀个指定长度的类型的string,如果⼀个string ⽐设定的长度短,那么它将按照最长的长度来储存,超出string部分,填补空格。
varchar2最大长度2.char和varchar的应⽤:
当你的string没有固定长度的时候使⽤varchar(例如,姓名,城市,等等)。
当你的string有固定长度的时候使⽤char(例如,电话号码,区号,等等)。
⼆、前⾯带⼀个“n”的类型
varchar/char前⾯带⼀个“n”的类型,意味着既可以存放unicode 编码的字符也可以存放⾮unicode编码的字符。没有“n”,则意味着只能存放unicode编码的字符。
如果你的数据库⾥只有英⽂字符的话,那么使⽤nvarchar/nchar 或 varchar/char差别很⼩,如果处理不同国家的字符最好⽤
nchar/nvarchar.
什么是unicode编码?
简单的说就是⽤两个字节表⽰⼀个字符,这是针对各国⽂字、符号进⾏统⼀性编码,unicode的主要⽤途是当你处理不同国家字符,⽐如⽇语或汉语。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论