将 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码转换为对应的字符,并将结果重新聚合成一个字符串。
| res |
| --- |
| It |
假设我有一个 "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码转换为对应的字符,并将结果重新聚合成一个字符串。
| res |
| --- |
| It |