mysql - 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
,但有没有更简单的方法?
解决方案
您可以使用 转换为数字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)
推荐阅读
- regex - 用VI编辑器中的特定匹配替换每一个匹配的正则表达式?
- javascript - 延迟加载模块时出现运行时错误
- docker - Docker 子镜像不继承安装在基础镜像中的包
- python - 使用python将行转换为列
- angular - 使用带有 Ionic / Angular 的非 npm 3rd 方库
- laravel - Laravel Eloquent 关系在哪里
- apache-spark - 使用 Pyspark 将数据从 .dat 转换为镶木地板
- xaml - 如何在 Xamarin.Forms 中使用 TableView?
- node.js - firebase deploy 未被识别为内部或外部命令,可运行程序
- facebook - 完整性认证失败,因为 Facebook 认为我的域未经过验证