分割字符串后去重

SQL查询了一个字段,字段内有多个值用,分隔开,如:

select 地区 from 表A 

得出

地区

山东,山西,湖南,山东

希望对结果进行处理,得到

地区

山东,山西,湖南

SQL应该如何写


FineReport 13207222709 发布于 2019-12-5 14:48
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
shirokoLv6资深互助
发布于2019-12-5 14:53

select distinct 地区 from 表A 

最佳回答
0
sayLv6初级互助
发布于2019-12-5 14:55(编辑于 2019-12-5 16:07)

还有其他字段吗,没有的话,可以select distinct 地区 from 表A(理解错问题了)。

应该这样:

select wm_concat(b.地区)

  from (select distinct t.地区

          from (select regexp_substr(t.地区, '[^,]+', 1, Level, 'i') 地区

                  from 表A as t

                connect by Level <= LENGTH(t.地区) -

                           LENGTH(REGEXP_REPLACE(t.地区, ',', '')) + 1) t) b


最佳回答
0
萌萌的呆贼Lv4初级互助
发布于2019-12-5 15:07

创建一个函数:

image.png

测试:

image.png

最佳回答
0
LSQ000Lv5中级互助
发布于2019-12-5 15:24

mysql可以怎么写

SELECT 

    GROUP_CONCAT(distinct SUBSTRING_INDEX(SUBSTRING_INDEX('山东,山西,湖南,山东',',',help_topic_id+1),',',-1)) AS area

FROM 

    mysql.help_topic 

WHERE 

    help_topic_id < LENGTH('山东,山西,湖南,山东')-LENGTH(REPLACE('山东,山西,湖南,山东',',',''))+1
其中'山东,山西,湖南,山东',可以直接替换成查询语句


  • 5关注人数
  • 1345浏览人数
  • 最后回答于:2019-12-5 16:07
    请选择关闭问题的原因
    确定 取消
    返回顶部