user1822391 :
In MySQL, how would I select each character in a given string as individual rows, if the length of the string is unknown. For example, if I have the string:
SET @str:='abc';
I would like a SELECT
statement to produce:
rownum char
====== ====
1 a
2 b
3 c
If possible, I would like to avoid temp tables or stored procedures.
Nae :
SELECT @var_i + 1 AS rownum, SUBSTR(@var_str, (@var_i := @var_i + 1), 1) AS `char`
FROM (SELECT (@var_str := "abc") AS _, (@var_i := 0) AS __) AS pow0
CROSS JOIN (SELECT 0 AS _ UNION ALL SELECT 0) AS pow1
CROSS JOIN (SELECT 0 AS _ UNION ALL SELECT 0) AS pow2
CROSS JOIN (SELECT 0 AS _ UNION ALL SELECT 0) AS pow3
CROSS JOIN (SELECT 0 AS _ UNION ALL SELECT 0) AS pow4 -- 8 < 10 < 16
WHERE @var_i < CHAR_LENGTH(@var_str)
;