首页 > 解决方案 > MySQL 将字母转换为数字(例如,'A' 转换为 1,'B' 转换为 2...)

问题描述

我正在制作 mysql SP,它有一个 VARCHAR(20) 类型的输入。

我想要做的是将输入字符串的最后一个字符转换为数字。

但是最后一个字符可以是数字或字母,所以如果是数字,则不需要转换。

例如,输入“APPLE”将转换为“5”,因为“E”按字母顺序是 5,“123”将是“3”,“BANANA”将是“1”。

为此,我拆分了最后一个字符,但不知道如何转换。

BEGIN

SET splited_str := RIGHT(UPPER(p_input), 1);

# with splited_str, convert letter to number in alphabetical order

END

我认为它是可能的CASE ~ When,但有没有更简单的方法?

标签: mysqlsql

解决方案


您可以使用 转换为数字ASCII()。您描述的逻辑似乎是:

select (case when right(p_input, 1) between '0' and '9'
             then right(p_input, 1) + 0    -- convert digit to number
             else 1 + ascii(upper(right(p_input, 1))) - ascii('A')
        end)

推荐阅读