sql - 如何在不使用 regexp_like 的情况下从列中获取整数
问题描述
我有一个列X
,Oracle
其中包含“a1b2c3”、“abc”、“1ab”、“123”、“156-346”等值
我如何编写一个 sql 查询,它只返回包含X
纯数值的数据,例如123,456
等。
我无法使用regexp_like
,因为我正在使用10g
.
解决方案
这里有两个选项:一个使用正则表达式,另一个使用translate
函数。
SQL> with test as
2 (select 'a1b2c3' col from dual union all
3 select 'abc' from dual union all
4 select '1ab' from dual union all
5 select '123' from dual union all
6 select '156-346' from dual
7 )
8 select col,
9 regexp_replace(col, '[^[:digit:]]') result,
10 --
11 translate(col, '0'|| translate(col, '$0123456789', '$'), '0') result2
12 from test;
COL RESULT RESULT2
------- ------- -------
a1b2c3 123 123
abc
1ab 1 1
123 123 123
156-346 156346 156346
SQL>
推荐阅读
- javascript - axios.all 将函数显示为未定义
- apache-spark - 火花错误读取镶木地板
- abap - ABAP中的复合子程序调用?
- vba - 尝试遍历子文件夹和子文件夹中的文件
- scikit-learn - 在 scikit-learn permutation_test_score 中进行缩放
- symfony - 创建继承表以及如何获取超类?教义交响乐
- java - Spring-Core-WS 与 Spring 4.3.15 不兼容是吗?
- reactjs - 将日期标准化为 DD/MM/YYYY - redux 形式
- sql - SQL 使用中间结果
- c# - 使用 LINQ 优化两个列表中的比较