【发布时间】:2022-11-14 22:32:23
【问题描述】:
我在从数据库中检索 MAX 编号时遇到问题。 问题是数字是字符串格式,因为它们包含下划线。
示例案例: 我在数据库中有 3 个数字:
123456_1, 123456_2, 123456_13,
我想获取的 MAX 数字是 123456_13 (基本上是下划线后最大的),但由于它们是字符串,Oracle 按字母顺序处理它们并按升序排列:
- 123456_1
- 123456_13
- 123456_2
使 123456_2 成为 MAX。
如果我不需要通过替换下划线并转换为数字来显示实际的 MAX 或 MIN 数字,这是可能的:
SELECT MAX(TO_NUMBER(REPLACE(number,'_',''))) max_nr, MIN(TO_NUMBER(REPLACE(number,'_',''))) min_nr FROM ...这将返回 12345613 max_nr 1234561 min_nr 从我的 3 个示例中,但我需要使用下划线获取实际数字并显示它。
有没有办法做到这一点?
【问题讨论】:
-
试试
ORDER BY TO_NUMBER(REPLACE(number,'_',''))) -
如果您只想获取第一个条目,或者将您的条件放在 WHERE 子句中。选择号码 FROM...WHERE REPLACE(number,...) = (SELECT MAX(REPLACE(number,...)));
标签: sql database oracle max min