How to select one char of a string as individual row MySQL

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)
;

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=31774&siteId=1