mySQL 字母数字字符串排序问题

标签 mysql sql string sorting

我购买了一个数据库,其中包含非零填充的字母数字高尔夫球场“号码”,例如 ZZ-1、ZZ-2、ZZ-9、ZZ-10...

我需要编写一个查询,该查询将提取 MAX 数值,并且 MAX 在字符串上使用时不会 DWIM,并将 ZZ-9 排序为 MAX 而不是 ZZ-10。

SELECT MAX( CourseNumber ) AS x
FROM courses
WHERE CourseNumber
RLIKE 'ZZ'

仅选择数字时出现同样的问题:

SELECT MAX(SUBSTR(CourseNumber, 4)) AS x 
FROM courses WHERE CourseNumber RLIKE 'ZZ'

谁有聪明的方法来做到这一点?我认为它必须涉及 SUBSTR 但我不知道如何让它工作。

最佳答案

SELECT MAX(
  CAST(
    SUBSTRING(CourseNumber, 4) AS UNSIGNED)
  ) 
FROM courses WHERE CourseNumber RLIKE 'ZZ'

关于mySQL 字母数字字符串排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265249/

相关文章:

mysql - 按字母顺序更新数据库字段值

sql - 从数据库模型中消除可空列的选项(为了避免 SQL 的三值逻辑)?

java - 在 map-reduce java 中切换字符串的奇怪错误

字符串比较 - JDK 版本产生不同的结果

php - CodeIgniter 中 CRUD 系统和 JOIN 查询的最佳实践

javascript - Google Chart 显示空图

php - MYSQL utf8 日期、日期时间、int 排序规则

sql - 如何在 PostgreSQL 中的点后显示 2 位数字?

mysql - 对用于报告的 Wordpress/Woocommerce 自定义 SQL 查询进行故障排除

c++ - 转换浮点值时设置 std::to_string 的精度