【发布时间】:2011-07-13 00:32:58
【问题描述】:
我有一个购买的数据库,其中包含非零填充字母数字高尔夫球场“数字”,例如 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,但我想不出如何让它发挥作用。
【问题讨论】:
-
字母前缀是固定长度的,还是有“PDQ”和“ABCDFEGFGHIJLFERWEFDSFDS”前缀?无论哪种方式,如果您对这些子字段进行大量搜索/匹配,您可能需要花时间将这些位预先拆分为单独的字段,以便您可以对这些派生字段进行直接匹配,否则您的where 子句将变成一团糟的子字符串/强制转换子句。
-
目前都是2个字母,连字符,数字。我的老板从那里购买这些数据的人都是白痴,所以它可能不会永远保持这种状态,但假设该模式适合我的解决方案!