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

如何在一个Sql函数里取出"a,b,c,d"中的"b"字符呢?
有几个字符串

"a "
"a,b,c,d "

我想用Sql函数取出 "b "字符,如果没有则不取出.

思路有了,怎么做呢?   Sql好像没有split函数呀


------解决方案--------------------
declare @str varchar(80)
set @str = 'a,b,c '
select case when @str like '%[,]b[,]% ' then 'b ' else ' ' end

--抛砖引玉 啦 :)
------解决方案--------------------

看不明白楼住什么意思

如果如一楼所说,还不如直接replace两次就可以了啊

replace(replace( 'a,b,c,d,b ', 'b, ', ' '), ',b ', ' ')
------解决方案--------------------
create table T(col varchar(20))
insert T select 'a '
insert T select 'a,b,c,d '

select * from T
where charindex( 'b ', col)> 0

--result
col
--------------------
a,b,c,d

(1 row(s) affected)

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

select case when ', '+f+ ', ' like '%,b,% ' then 'b ' else ' ' end from t

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
有几个字符串

"a "
"a,b,c,d "

我想用Sql函数取出 "b "字符,如果没有则不取出.
--------------
既然知道要取的是b,那还何必取,直接用b不就得了。
如果只是要取出包含b的字符串,直接like '%b% '
select case when @str like '%b% ' then @str else ' ' end
不就好了,还用的着去拼逗号么?

------解决方案--------------------
--參考
http://blog.csdn.net/zjcxc/archive/2004/07/29/55329.aspx
------解决方案--------------------
取第二个字符串

declare @str1 varchar(100)
declare @str2 varchar(100)
declare @len int
set @str1= 'dsa,mw51m234,345sdf '
set @str2=substring(@str1,charindex( ', ',@str1)+1,len(@str1))
set @len=charindex( ', ',@str2)-1
select substring(@str1,charindex( ', ',@str1)+1,@len)
----------
mw51m234