将 ascii 码转换为字符并将其存储在 table 的列中

converting ascii code to character and storing it inside a column of a table

假设我有一个 "varchar" 变量,其中包含 "ascii" 代码,彼此之间用“,”分隔,我想将其转换为字符并将其插入列中。有什么办法可以做到这一点?我是 mysql 的新人,所以我想知道是否有人可以提供帮助。

示例:假设我们在触发器或过程中。

declare test varchar(10);
set test = "73,116";

现在我想将它转换成 "it" 并将其存储在 table 的列中,该列也是 varchar。 请帮助我。

迭代解析字符串对于诸如 SQL.

这样的基于集合的语言来说并不是一件容易的事

一个选项使用递归查询(在 MySQL 8.0 中可用):

set @test = '73,116';

with recursive cte as (
    select 
        1 n, 
        0 + substring(@test, 1, locate(',', @test) - 1) part,
        concat(substring(@test, locate(',', @test) + 1), ',') rest
    union all
    select
        n + 1,
        substring(rest, 1, locate(',', rest) - 1),
        substring(rest, locate(',', rest) + 1)
    from cte
    where locate(',', rest) > 0
)
select group_concat(char(part using utf8) order by n separator '') res
from cte;

递归查询按顺序提取每个 csv 部分,同时跟踪位置。然后,外部查询将每个ASCII码转换为对应的字符,并将结果重新聚合成一个字符串。

Demo on DB Fiddle:

| res |
| --- |
| It  |