mysql 我有一个字段保存的值使用逗号隔开,怎么查询字段里总共有多少个值

phpchao 2012-11-18 04:39:31
mysql 我有一个表字段保存的值使用逗号隔开,怎么查询字段里总共有多少个值,

例如:
test_ids
11,22,33,43,53
也就表示字段里有5个值
sql语句怎么写啊
...全文
1427 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjwwj 2013-11-06
  • 打赏
  • 举报
回复
SELECT LENGTH('11,22,33,43,53')-LENGTH(REPLACE('11,22,33,43,53',',',''))+1
phpchao 2012-11-19
  • 打赏
  • 举报
回复
引用 1 楼 jiangshun 的回复:
select len(test_ids)-len(replace(test_ids,',',''))
谢谢啊!没有测试正确
习惯性蹭分 2012-11-19
  • 打赏
  • 举报
回复
1楼思维不错啊。


declare @val varchar(40),@ind int,@count int
set @val='11,22,33,43,53'
set @ind=CHARINDEX(',',@val)
set @count=1
while @ind>0
begin
set @val=RIGHT(@val,len(@val)-@ind)
set @ind=CHARINDEX( ',',@val)
set @count=@count+1
end
select @count
發糞塗牆 2012-11-18
  • 打赏
  • 举报
回复
我给个SQLServer的方式把: 1、先创建一个函数,用于记录某个字符的出现数目:

 create function AccRepeat(@str varchar(50),@sub varchar(50))
 returns int
 as
 begin
 	declare @pos int,@n int
 
 	select @n=0, @pos=charindex(@sub,@str)
 
 	while(@pos<>0)
 	begin
 		select @str=right(@str,len(@str)-@pos),@pos=charindex(@sub,@str),@n=@n+1
 	end
 
 	return(@n)
 end
 go
2、调用函数,这里有个小技巧,就是计算逗号的出现数母,然后加1.
WITH huang (test_ids) AS (SELECT '11,22,33,43,53')
 SELECT dbo.AccRepeat(test_ids,',')+1 FROM huang
with只是我用来创建表而已,你用select那里就可以了。另外,这是SQLServer的写法,mysql不一定支持,
longai123 2012-11-18
  • 打赏
  • 举报
回复
楼上正解。。牛人。
jiangshun 2012-11-18
  • 打赏
  • 举报
回复
select len(test_ids)-len(replace(test_ids,',',''))

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧