日期:2014-05-18  浏览次数:20402 次

sql报错不能比较或排序 text、ntext 和 image 数据类型,除非使用 IS NULL 或 LIKE 运算符。
select Mid,title1,detail1,photopath,changedate,
tb_main.username,tb_main.remark,sortA,sortB,MGood,KunNan,
count(*) AS PLNum 
from tb_main 
left join tb_pl on tb_main.Mid = tb_pl.MainID
group by Mid,title1,detail1,photopath,changedate,tb_main.username,tb_main.remark,sortA,sortB,MGood,KunNan

报错:
服务器: 消息 306,级别 16,状态 2,行 1不能比较或排序 text、ntext 和 image 数据类型,除非使用 IS NULL 或 LIKE 运算符。


注:tb_main.Mid 是自动编号,而tb_pl.MainID是vacher类型.不知道是不是因为两个类型不同,以至出错。。有解决方法吗??谢谢!!!


------解决方案--------------------
应该是你 detail1 是text类的字段吧。

如果这个里面内容不多,而你又一定要group by这个字段的话,
那么可以试试 cast(detail1 as varchar(max))转换后进行查询。
------解决方案--------------------
tb_main.Mid 是自动编号,而tb_pl.MainID是vacher类型

两个类型不同,你如何做条件比较?

on tb_main.Mid = tb_pl.MainID

至少要改为
on cast(tb_main.Mid as varchar) = tb_pl.MainID

on tb_main.Mid = cast(tb_pl.MainID as int)