sql server 中 text 数据类型比较注意!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 中 text 数据类型比较注意!相关的知识,希望对你有一定的参考价值。
参考技术A 之前,习惯性地写查询语句时,查询条件用“=”判断。今天写程序的时候,查询时突然报了一个错误:数据类型text和varchar在equal to 运算符中不兼容。提示如下:The data types text and text are incompatible in the equal to operator.
查找相关资料发现Text类型的属性 不能用“=”判断相等,因为它不支持,可以用“like”判断。
另外还有几点需要注意:
(1):Text字段类型不能直接用replace函数来替换,必须用updatetext
(2):字段比较不能用 where 字段 = ‘某数据’,可以用like来代替
(3):updatetext时,若@ptrval值为空会出错,需注意*/
也有人说text现在很少用了,因为在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.
ps: 原文地址
http://www.cnblogs.com/xfq-sean/p/4625531.html
sql server中字符串类型的日期如何比较大小
日期数据在Sql Server数据库中不都是以日期类型保存的,如果数据库中保存日期字段的数据类型为varchar,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢?总结有以下方法
(1)方法一
这个方法很容易想到,就是纯粹地利用字符串来比较大小,比如有一个字段为adddate,其数据类型为varchar,要比较这个日期是不是大于某个日期,比如"2016-2-22",那么可以直接写:where adddate>'2016-02-22',这种方法很直观,当然也需要在格式上有所规范,比如,如果日期是2016年2月22日,就必须将日期保存为2016-02-22,否则比较的时候容易出错。
(2)方法二
利用Sql提供的日期转换函数:CONVERT (<data_ type>[ length ], <expression> [, style])1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
2)length用于指定数据的长度,缺省值为30。
3)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。如果用这种方法来判断某一个字段的话,则存入的日期字段的字符串格式只要是能让sql server完成对日期的转换就可以了,而不一定要像第一种方法中的那样严格。还是说adddate字段,比如要比较它是否大于当前的日期,就可以这样写:where (CONVERT(varchar, adddate) >= CONVERT(varchar, GETDATE())) 。
以上是关于sql server 中 text 数据类型比较注意!的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个不同数据库(MySQL、SQL SERVER)之间的 TEXT 字段与哈希值进行比较?
MAX(text) 返回操作数数据类型 text 对于 max 运算符无效。在 sql server 2008 中