日期:2014-05-19  浏览次数:20870 次

paoluo(一天到晚游泳的鱼)麻烦进来下,刚才那个问题还有点BUG
原帖地址是http://community.csdn.net/Expert/topic/5678/5678397.xml?temp=.177807
 
我的content是text字段的,如果换成varchar图片就插不进去,但是text字段的运行你给的SQL语句会有出错提示:
函数   stuff   的参数   1   的数据类型   text   无效。

怎么办呢

------解决方案--------------------
try

只要沒超過8000就沒有問題

Select id, title,
(Case When CharIndex( ' <img src ', content) > 0 Then
Stuff(content, CharIndex( ' <img src ', content), CharIndex( '> ', content, CharIndex( ' <img src ', content) + 1) - CharIndex( ' <img src ', content) + 1, ' ')
Else content End) As content From (Select id, title, Cast(content As Varchar) From 留言表 ) A
------解决方案--------------------
---鱼老大你的是不是有点小错误啊,LZ好象应该为!!!
Select id, title,
(Case When CharIndex( ' <img src ', content) > 0 Then
Stuff(content, CharIndex( ' <img src ', content), CharIndex( '> ', content,
CharIndex( ' <img src ', content) + 1) - CharIndex( ' <img src ', content) + 1, ' ') Else content End) As content
From (Select id, title, Cast(content As Varchar(8000)) AS content From 留言表 ) A


------解决方案--------------------
用patindex, substring,可以直接對text操作
------解决方案--------------------
--cast()如果不指定varchar的长度,默认只保留前30个字节

create table T (context text)

insert into T
select '啊0123456789-a-0123456789-b-0123456789-c-0123456789-d '

select context from T

select
cast(context as varchar) as 默认只保留30个字节,
len(cast(context as varchar)) as 字符个数,
datalength(cast(context as varchar)) as 字节数
from T

drop table T


------解决方案--------------------
wangtiecheng(不知不为过,不学就是错!) 对cast的理解才是对的