前提:有时需要查询A列的特值(如:最大值,最小值),但是该列为varchar类型。如果直接查找结果会出现错误,作者也是一个小白,最近做开发时遇见了这个问题,因此特意在这里记录一下。
一、了解varchar类型如何转换成int类型
cast(A as unsigned integer)
或者
cast(A as signed integer)
二、取特值
SELECT max(cast(A as unsigned integer))
FROM table_name WHERE 1=1三、注意
如果持久层框架用的是JPA或者Hibernate(myBatis我不知道会怎样),就会有一个特别坑的地方
错误写法
@Query("select max(cast(A as signed integer)) from table_name where 1=1 "),这样写会报错,看到我把signed置为红色没? 正确的写法
@Query("select max(cast(A as integer)) from table_name where 1=1 "),要把signed 去掉