在数据库设计过程中,我们常常需要设计自定义主键,比如:GC+日期+序号 什么乱七八糟的都有。为了找这些主键的最大值或最小值往往就得转些小弯。
错误sql:
SELECT CUST_ID from T_CM_CUST WHERE CUST_ID LIKE 'HH%' ORDER BY substring(CUST_ID,3) DESC LIMIT 0,2;note:上面sql用substring函数把后面的数字截取出来进行排序,实际还是进行字符串排序,很有可能没load出最大值。
正确sql: SELECT CUST_ID from T_CM_CUST WHERE CUST_ID LIKE 'HH%' ORDER BY substring(CUST_ID,3)+0 DESC LIMIT 0,2;
note:这两个sql 的区别在于, 第二个sql对截取的字符串进行了“+0”操作,说白了就是转换成整型,而后排序。
--------------------------------------------------------------荆轲刺秦王----------------------------------------------------------------------------------------