求助:查询一个用逗号分隔字段的sql语句

haoke365 2010-05-21 09:55:28
我现在有个表rwd01,其中一个字段jsdx存放的是用户ID,而且存放时有两种情况:1、只存放单个用户id如user;2、同时存放多个用户id,不同id之间用逗号分隔如user1,user2,user3。

现在是无论存放单个id还是多个id,想只显示其中第一个id即可,我写了个sql:

select jsdx,SUBSTRING(jsdx,1,CHARINDEX(',',jsdx)-1) from rwd01

执行时如果遇到单个用户id的记录,就会报"传递到 SUBSTRING 函数的长度参数无效"的错误,请高手指教一下该如何调整
...全文
325 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujinyuan 2010-05-21
  • 打赏
  • 举报
回复

都飞快
rmljoe 2010-05-21
  • 打赏
  • 举报
回复
唉,总是比别人慢
rmljoe 2010-05-21
  • 打赏
  • 举报
回复
select jsdx,SUBSTRING(jsdx,1, (case when CHARINDEX(',',jsdx) = 0 then len(jsdx) else CHARINDEX(',',jsdx) - 1 end)) from rwd01
dawugui 2010-05-21
  • 打赏
  • 举报
回复
--方法一
select jsdx,SUBSTRING(jsdx,1,CHARINDEX(',',jsdx)-1) jsdx from rwd01 where CHARINDEX(',',jsdx) > 0
union all
select jsdx,jsdx from rwd01

--方法二
select jsdx,(case when CHARINDEX(',',jsdx) > 0 then SUBSTRING(jsdx,1,CHARINDEX(',',jsdx)-1) else jsdx end) jsdx from rwd01
guguda2008 2010-05-21
  • 打赏
  • 举报
回复
水哥正解
dawugui 2010-05-21
  • 打赏
  • 举报
回复
select jsdx,SUBSTRING(jsdx,1,CHARINDEX(',',jsdx)-1) jsdx from rwd01 where CHARINDEX(',',jsdx) > 0
union all
select jsdx,jsdx from rwd01
bill024 2010-05-21
  • 打赏
  • 举报
回复
select jsdx,
case when CHARINDEX(',',jsdx)>0 then SUBSTRING(jsdx,1,CHARINDEX(',',jsdx)-1) else jsdx end
from rwd01
guguda2008 2010-05-21
  • 打赏
  • 举报
回复
select jsdx,SUBSTRING(jsdx,1,CHARINDEX(',',jsdx+',')-1) from rwd01
水族杰纶 2010-05-21
  • 打赏
  • 举报
回复
--try
select jsdx,SUBSTRING(jsdx+',',1,CHARINDEX(',',jsdx+',')-1) from rwd01

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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