oracle - 使用函数操作进行 Oracle 排序
问题描述
为什么 oracle 没有正确排序或者我缺少什么?
select a from (
select '100##' as a from dual union
select '43##Y' as a from dual union
select '58##Y' as a from dual union
select '78##' as a from dual union
select '##' as a from dual union
select '##' as a from dual
) order by to_number(substr(a, 0, instr(a, '#') - 1)) asc;
输出 :
43##Y
58##Y
78##
100##
##
解决方案
您需要将起始位置的 0 替换为 1,substr
因为 oracle 中的索引从 1 开始。
select a from (
select '100##' as a from dual union
select '43##Y' as a from dual union
select '58##Y' as a from dual union
select '78##' as a from dual union
select '##' as a from dual union
select '##' as a from dual
) order by to_number(substr(a, 1, instr(a, '#') - 1)) asc;
推荐阅读
- python - 类参数条件
- javascript - 如何访问用户在 VueJS 的这些 v-text-fields 中输入的数据?
- c++ - 如何将生成的数字从 1 到 500 存储在两个数组中
- r - 对存储在列表中的数据应用 PCA
- kubernetes - 将 GKE 与 HTTP 代理一起使用
- php - 从十六进制到字符串 utf8 的俄语字符 - 获取错误的字符
- sass - Ionic4 构建错误:page.scss 中未定义的 SCSS 变量
- java - Android 以编程方式制作 CardViews
- python - 如果输入图像上有不同的 input_shape,我该如何使用 keras
- linux - 我们可以使用 sed 将一个变量替换为多个变量吗