MySQL里面,如何在SQL语句中让字符串的 “123” 转换为数字的 123 ?
我们在一些需要字符串进行排序的时候,经常遇到这样的场景。
解决办法如下:
1. 将 Int 转为 varchar:
经常用 concat 函数,比如 concat(8,'0') 得到字符串 '80';
2、将 varchar 转为 Int ,有三种方法:
①. CAST函数(常用):如 SELECT CAST('123' AS SIGNED integer) ;
②. CONVERT函数:SELECT CONVERT('123',SIGNED);
③. +0 则将字符串自动转化成整数:SELECT '123' + 0;
CAST 函数的可转换类型,包含:
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
小编曾遇到这样一个场景:
1. ID字段是varchar类型的数字,找出ID的最大值,怎么写SQL?
-
SELECT MAX(CAST(PRE_ID AS SIGNED integer)) PRE_ID FROM T_TABLE;
-
SELECT MAX(PRE_ID + '0') PRE_ID FROM T_TABLE;
小编最初使用上面的方法,后来发现我的项目不支持该函数(老项目不让改pom),只能使用+0的方法,完美适配。
更多精彩,请关注我的"今日头条号":Java云笔记
随时随地,让你拥有最新,最便捷的掌上云服务