sql查询字符串列中的最大值?

表中某字符串列c内容如下:
abc1
abc2
abc3
....
abc999
....
abc1024

如何使查询返回abc1024,而不是abc999(使用max(c)得到的结果)

阅读 5.9k
3 个回答

假设表名为 t,该列为 c,先截去定长的前缀得到纯数字,再转为整型作为排序依据:

SELECT c, CAST(SUBSTRING(c,4) AS INT) AS tmp FROM t ORDER BY tmp DESC LIMIT 1;

楼上用了字符串截取函数,数据量多的时候就麻烦了。
不建议这样查询,建议从源头重新设计储存方案。

找了一会找到了答案:
how to select max of mixed string/int column?

MySQL

SELECT MAX(CAST(SUBSTRING(c, 4, LENGTH(c)-3) AS UNSIGNED)) FROM table

T-SQL / SQL Server

SELECT MAX(CAST(SUBSTRING(c, 4, LEN(c)-3) AS int)) FROM table
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题