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

[请教]在数据库字段中,如何拆分,获得我想要的数据
有一个表,很多记录
有一个字段,iPic,   其中一条记录的值   No,UpLoad/200723111519186.gif,No,No,No,UpLoad/20072311162963.jpg
按照 ", "分开

我在提取数据时候:
我想提取这个字段第一个值不是“No”的记录???

谢谢

------解决方案--------------------
这种东西我觉得在陈绪里面处理相对容易些;
------解决方案--------------------
select * from tbname where left(iPic,left(iPic,charindex( ', ',iPic)-1)!= 'No '
or
select * from tbname where patindex( 'No,% ',iPic)=0
------解决方案--------------------
select * from tbname where left(iPic,2)= 'No '

------解决方案--------------------
select * from tbname where patindex( 'No, ',iPic)=0
或者
select * from shitfuck4 where patindex( 'No,% ',iPic)=1
------解决方案--------------------
CREATE FUNCTION dbo.f_splitSTR(
@s varchar(8000), --要分拆的字符串
@split varchar(10), --数据分隔符
@pos int -- 取第几个
)RETURNS varchar(100)
AS
BEGIN
DECLARE @splitlen int, @re varchar(100)
SET @splitlen=LEN(@split+ 'a ') - 2
WHILE CHARINDEX(@split,@s) > 0 AND @pos > 0
SELECT
@re = LEFT(@s,CHARINDEX(@split,@s)-1),
@s=STUFF(@s,1,CHARINDEX(@split, @s)+@splitlen, ' '),
@pos = @pos - 1
RETURN(CASE
WHEN @pos = 0 THEN @re
WHEN @pos = 1 THEN @s
ELSE NULL END)
END
GO

--判断第三个是否为No
select * from tbname where dbo.f_splitSTR(userinfo, ', ', 3) = 'No '
------解决方案--------------------
如果是text类型,不能使用left的