mysql 在SQL中将逗号分隔的字符串解析为列

h9a6wy2h  于 2023-02-21  发布在  Mysql
关注(0)|答案(1)|浏览(187)

我在处理一个SQL表时遇到了一个如下所示的列:
| 列名|
| - ------|
| 属性1 =值1a;属性2 =值2a;attr3 = val3a;属性4 =值4a|
| 属性1 =值1b;属性5 =值5b;属性3 =值3b;属性6 =值6b|
它的类型为string。我想将这一列拆分为多列,如下所示:
| 属性1|属性2|原子3|属性4|属性5|attr6|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 谷1a|瓣膜2a|val3a|val4a|无效|无效|
| 瓣膜1b|无效|瓣膜3b|无效|瓣膜5b|瓣膜6b|
有人能帮我找到一种方法来做到这一点在SQL请。
先谢了!
编辑:我正在使用MySQL

yc0p9oo0

yc0p9oo01#

CREATE TABLE test
SELECT 'attr1=val1a; attr2=val2a; attr3=val3a; attr4=val4a' columnName
  UNION ALL
SELECT 'attr1=val1b; attr5=val5b; attr3=val3b; attr6=val6b'
SELECT columnName,
       as_json->>'$.attr1' attr1,
       as_json->>'$.attr2' attr2,
       as_json->>'$.attr3' attr3,
       as_json->>'$.attr4' attr4,
       as_json->>'$.attr5' attr5,
       as_json->>'$.attr6' attr6 
FROM (
    SELECT columnName,
           CONCAT('{"', REPLACE(REPLACE(columnName, '=', '":"'), '; ', '","') , '"}') as_json
    FROM test
    ) to_json

| 列名|属性1|属性2|原子3|属性4|属性5|attr6|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 属性1 =值1a;属性2 =值2a;attr3=val3a;属性4 =值4a|谷1a|瓣膜2a|val3a|val4a|* 无效 | 无效 |
| 属性1 =值1b;属性5 =值5 b;属性3 =值3b;属性6 =值6 b|瓣膜1b|
无效 |瓣膜3b| 无效 *|瓣膜5 b|瓣膜6 b|
fiddle

相关问题