所以我有一个字符串,说'hello',我想将其分解为字符,并将每个'h','e','l','l','o'存储在diff变量中。我应该如何在Mysql中做到这一点?任何帮助将不胜感激。我知道如何用Python和Java做到这一点,但这里还不行。
如果您正在运行MySQL 8.0,则可以使用递归查询从字符串中提取每个字符并将其放在单独的行中:
set @word = 'hello';
with recursive cte as (
select @word as word, left(@word, 1) as val, 1 as idx
union all
select word, substring(word, idx + 1, 1), idx + 1
from cte
where idx < char_length(word)
)
select val from cte order by idx
| val || :-|| h || e || l || l || o |
在早期版本中,通常为此使用数字表。
如果要按照注释中的指示将字符串重建为ascii字符序列,则可以如下更改外部查询:
select group_concat(ascii(val) order by idx separator '-') ascii_word from cte
您可以将separator
调整为最适合您的方式。此produces:
| ascii_word || :------------------ || 104-101-108-108-111 |