Using the following query:
SELECT REPLACE(CONCAT("[", SUBSTRING(COLUMN_TYPE, 6, LENGTH(COLUMN_TYPE) - 6), "]"), "'", '"') AS types
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='myschema'
AND TABLE_NAME='tbl_items'
AND COLUMN_NAME='itemTypes';
I get a result like this one:
+-------------------------+
| types |
+-------------------------+
| ['a','b','c','d'] |
+-------------------------+
How can I have a result like this:
+--------------+
| type |
+--------------+
| a |
| b |
| c |
| d |
+--------------+
I know about JSON_TABLE, and I do get a static list of what I want with:
SELECT *
FROM JSON_TABLE('["a","b","c","d"]', '$[*]' COLUMNS( type CHAR(1) PATH '$' )) AS tt;
But this does not work:
WITH t AS (
SELECT REPLACE(CONCAT("[", SUBSTRING(COLUMN_TYPE, 6, LENGTH(COLUMN_TYPE) - 6), "]"), "'", '"') AS types
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='myschema'
AND TABLE_NAME='tbl_items'
AND COLUMN_NAME='itemTypes'
LIMIT 1
)
SELECT *
FROM JSON_TABLE(t.types, "$[*]" COLUMNS( type CHAR(1) PATH "$" )) AS tt;
#1109 - Unknown table 't' in a table function argument
Neither this:
SELECT *
FROM JSON_TABLE((
SELECT REPLACE(CONCAT("[", SUBSTRING(COLUMN_TYPE, 6, LENGTH(COLUMN_TYPE) - 6), "]"), "'", '"')
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='myschema'
AND TABLE_NAME='tbl_items'
AND COLUMN_NAME='itemTypes'
LIMIT 1
), "$[*]" COLUMNS( type CHAR(1) PATH "$" )) AS tt;
#1210 - Incorrect arguments to JSON_TABLE
What I'm doing is it even possible?