Oracle SQL 查询来排除行包含非数字字符

发布时间: 2017/4/15 19:09:52
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下的 oracle 查询它运行正常

SELECT c.customercode, s.sales_id 
FROM customers c 
LEFT JOIN sales s ON c.customercode = s.sales_id
WHERE c.address IS NOT NULL

和它返回结果看起来有点像这样︰

customercode        sales_id
12345678            456
34534534            678
23423423            X123

想要做的是排除其中 sales_id 包含任何非数字字符的行。所以上述的结果将不包括第 3 行。

解决方法 1:

你可以使用正则表达式。 在这种情况下,regexp_like( sales_id, '^[[:digit:]]*$' )

SQL> with x as (select 12345678 code, '456' sales_id from dual union all
  2             select 34534534, '678' from dual union all
  3             select 23423423, 'X123' from dual)
  4  select *
  5    from x
  6   where regexp_like( sales_id, '^[[:digit:]]*$' );

      CODE SALE
---------- ----
  12345678 456
  34534534 678
赞助商