gpt4 book ai didi

sql - 在 Oracle 查询中将 varchar 列排序为整数值

转载 作者:行者123 更新时间:2023-12-04 18:23:51 30 4
gpt4 key购买 nike

我有一列 DOOR,它是表 ADDRESS 中的 VARCHAR2。我想对 DOOR 列进行排序。

DOOR 只有两位数字,没有- 符号

当前当我使用查询时

select sname, door, zip from address a order by door

我得到以下结果:

a
b
1
10
11
2
3
31

但我希望结果看起来像这样:

a
b
1
2
3
10
11
31

我尝试使用 to_numberDOOT 转换为数值

select sname, to_number(door) dnr, zip from address a order by dnr

但它给我一个错误 ORA-01722

最佳答案

您可以使用 order by 中的逻辑来执行此操作:

order by (case when regexp_like(door, '^[0-9]*$') = 0 then 1 else 0 end) desc,
(case when regexp_like(door, '^[0-9]*$') = 0 then door end),
length(door),
door

这首先将非数字值放在首位。第二个子句按字母顺序对这些进行排序。第三个和第四个是数字。通过对值之前的长度进行排序,您将按顺序获得数字。

关于sql - 在 Oracle 查询中将 varchar 列排序为整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18363541/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com