sql - 仅选择数值,否则返回 NULL
问题描述
我对甲骨文很陌生。
我在 Oracle 中有一个名为的列Salary
,它的值类似于'19000.00'
, NULL
, N/A
, 不想说 , '17500'
。
如何编写返回数值 = 无字母或空值的 sql 查询?
从上面的例子来看,'19000.00'
, '17500.00'
。否则,对于所有非数字值,包括NULL
和 字母,返回NULL
。例如对于NULL
, N/A
, 不想说。
select salary from myTable where ...?
解决方案
您可以简单地使用正则表达式来过滤表,例如:REGEXP_LIKE(salary, '\d+(\.\d+)?')
此表达式允许一个数字序列,可选地后跟一个点和更多数字。
with x as (
SELECT 'N/A' salary FROM DUAL
UNION ALL SELECT NULL FROM DUAL
UNION ALL SELECT '19000.00' FROM DUAL
UNION ALL SELECT '17500' FROM DUAL
)
SELECT * FROM x WHERE REGEXP_LIKE(salary, '\d+(\.\d+)?')
产量:
| SALARY |
| :------- |
| 19000.00 |
| 17500 |
PS:如果不想过滤掉非数字值而是将其替换为NULL
,则:
SELECT CASE WHEN REGEXP_LIKE(salary, '\d+(\.\d+)?') THEN salary END FROM x
推荐阅读
- c# - 自定义对话框窗口棱镜
- ruby-on-rails - 如何在 Rails 中检查 HTTP 请求状态是否为 200 OK
- docker - 是否可以在 Jenkins Pipeline 中使用容器作为服务?
- html - 我的 CSS 按钮和边框样式在 IE11 中有效,但在 Google Chrome 中未加载
- java - Restful Spring API 支付系统
- javascript - 如何合并对象数组仅保留第一个数组中的属性
- ruby - 从源代码安装 ruby 后无法安装 bundler
- python - 我的 mystyle.css 在 django index.html 中不起作用
- google-authentication - 无法使用由 python API 创建的谷歌云服务帐户密钥进行身份验证
- gis - 在 Google 地球引擎中按系统索引拆分特征集合?