mysql查询无法工作

eivgtgni  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(479)

假设下面的代码在过程或触发器中。使用下面的代码,我可以将字符串“name”转换为字符,然后将每个字符转换为ascii代码,将其合并在一起并存储在变量“result”中
例如:假设name是“hello”,那么它看起来像“104101111”,其中h=104,e=101,l=108,o=111。
因为我搜索了cte的8.0+版本,所以我想知道是否有人能帮我做我需要做的事情,这样它也可以在旧版本上工作,也许不用cte之类的。谢谢您

declare name varchar(15);
    declare result decimal(64,0);

    with recursive cte as (
        select name as name, left(name, 1) as val, 1 as idx
        union all
        select name, substring(name, idx + 1, 1), idx + 1 
        from cte 
        where idx < char_length(name)
    )
    select group_concat(ascii(val) order by idx separator '') ascii_word from cte into result;
6yt4nkrj

6yt4nkrj1#

如果你有一个数字表,你可以用 join :

select group_concat(ascii(substr(name, n.n, 1)) order by n.n eparator '') as ascii_word
       into result
from name join
     (select 1 as n union all
      select 2 union all
      . . .
     ) n
     on length(name) <= n.n;

您可以针对您的问题将列表扩展到合理的长度,也可以在数据库中维护一个包含足够多行的数字表。也可以使用现有表,代码如下:

(select (@rn := @rn + 1) as n
  from existing cross join
       (select @rn := 0) params
  where @rn < length(name)
 )

相关问题