请教SQL查询出2个字段中以逗号分隔的不重复字符

cafeyu 2013-07-17 09:35:12
表table中有2个字段c和d,2个字段中存有以逗号分隔的多个字符如下所示(字段c中存在的一定在字段d中也存在,字段d中存在的不一定在c中),怎么样才能查询出不同时存在于2个字段中的字符?


字段c中: 131,132,133,134,139,137,159,155

字段d中: 131,132,133,134,139,137,159,155,185,186,189,135


我希望查出来的结果是: 185,186,189,135


请教各位帮我看看,谢谢了!
...全文
255 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztszhq 2013-07-18
  • 打赏
  • 举报
回复
引用 楼主 cafeyu 的回复:
表table中有2个字段c和d,2个字段中存有以逗号分隔的多个字符如下所示(字段c中存在的一定在字段d中也存在,字段d中存在的不一定在c中),怎么样才能查询出不同时存在于2个字段中的字符? 字段c中: 131,132,133,134,139,137,159,155 字段d中: 131,132,133,134,139,137,159,155,185,186,189,135 我希望查出来的结果是: 185,186,189,135 请教各位帮我看看,谢谢了!
只查出d不在c中的就好了

declare @c varchar(max)
,@d varchar(max)
,@Temp_Variable varchar(max)
,@result varchar(max)
set @c='131,132,133,134,139,137,159,155'+','--注意在@c补个逗号
set @d='131,132,133,134,139,137,159,155,185,186,189,135'
set @result=''
while(LEN(@d) > 0)
begin
    if(CHARINDEX(',',@d) = 0)
    begin
        set @Temp_Variable = @d
        set @d = ''
    end
    else
    begin
        set @Temp_Variable = LEFT(@d,CHARINDEX(',',@d)-1)
        set @d = RIGHT(@d,LEN(@d)-LEN(@Temp_Variable)-1)
    end   
    if(CHARINDEX(@Temp_Variable+',',@c)<1)
    begin
      set @result+=@Temp_Variable+','
    end
end 
if(@result!='')
begin
set @result=LEFT(@result,LEN(@result)-1)
end   
select @result
  • 打赏
  • 举报
回复
对额。。。 就是俩东西的比较 设一个数组或者列表 循环判断C 与D表中不同的项 存起来 这不就得到了?
x_jefferson 2013-07-18
  • 打赏
  • 举报
回复
这不是一个数组和另一个数组比较吗
白云任去留 2013-07-18
  • 打赏
  • 举报
回复
sql的话,定义个split函数处理后连表查询;非sql的话查出来后linq处理下(linq之except方法)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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