我有一个表有两个字符串user_id和user_activities_type。 进出口。
'John', '23Lqv'
'Mike', '159pLv3'
user_activities_type中的每个单词都有自己的含义,如
2-> take math lessons
3 -> take english lessons
L -> take chemical lessons
我想要的结果是
'John' ,'math,english,chemical'
'Mike','history,english,painting'
无论如何都是通过sql制作它?
提前致谢!
答案 0 :(得分:0)
你有一个非常非常糟糕的数据结构。我建议您使用每个用户和每个活动一行更改它,以及活动表。这是一种更典型的规范化数据模型,更适合于关系数据库。
但是,你可以这样做:
select user_id,
concat_ws(',',
(case when user_activities_type like '%1%' then 'history' end),
(case when user_activities_type like '%2%' then 'math' end),
(case when user_activities_type like '%3%' then 'english' end),
. . .
)
from t;
编辑:
糟糕!我没有意识到这是甲骨文。
select user_id,
substr(',' || (case when user_activities_type like '%1%' then 'history' end) ||
',' || (case when user_activities_type like '%2%' then 'math' end) ||
',' || (case when user_activities_type like '%3%' then 'english' end)
. . .
2)
from t;