SQL查询了一个字段,字段内有多个值用,分隔开,如:
select 地区 from 表A
得出
地区
山东,山西,湖南,山东
希望对结果进行处理,得到
山东,山西,湖南
SQL应该如何写
select distinct 地区 from 表A
还有其他字段吗,没有的话,可以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
创建一个函数:
测试:
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其中'山东,山西,湖南,山东',可以直接替换成查询语句