Sql 仅选择数值,否则返回NULL
我对甲骨文很陌生 我在Oracle中有一个名为Salary的列,它的值类似于'19000.00',NULL,N/a,我不想说'17500' 如何编写返回数值=无字母或null的sql查询 从上面的例子可以看出是“19000.00”、“17500.00”。否则,对于所有非数值,包括NULL和字母,返回NULL。例如,对于NULL,不适用,不愿意说Sql 仅选择数值,否则返回NULL,sql,string,oracle,where-clause,Sql,String,Oracle,Where Clause,我对甲骨文很陌生 我在Oracle中有一个名为Salary的列,它的值类似于'19000.00',NULL,N/a,我不想说'17500' 如何编写返回数值=无字母或null的sql查询 从上面的例子可以看出是“19000.00”、“17500.00”。否则,对于所有非数值,包括NULL和字母,返回NULL。例如,对于NULL,不适用,不愿意说 select salary from myTable where ...? 您可以简单地使用正则表达式来过滤表,比如:REGEXP\u LIKEsal
select salary from myTable where ...?
您可以简单地使用正则表达式来过滤表,比如:REGEXP\u LIKEsalary,“\d+\。\d+?” 此表达式允许数字序列,可选后跟一个点和更多数字 : 收益率:
| SALARY |
| :------- |
| 19000.00 |
| 17500 |
PS:如果不想过滤掉非数值,而是将其替换为NULL,那么:
SELECT CASE WHEN REGEXP_LIKE(salary, '\d+(\.\d+)?') THEN salary END FROM x
在Oracle 12.2中,您可以使用VALIDATE_转换: 或显示非数字的空值:
select case when VALIDATE_CONVERSION(salary AS NUMBER) = 1 then salary end
from my_table;
不要在varchar列中存储数字您使用的Oracle版本是什么?
select salary
from my_table
where VALIDATE_CONVERSION(salary AS NUMBER) = 1;
select case when VALIDATE_CONVERSION(salary AS NUMBER) = 1 then salary end
from my_table;