Oracle,仅显示没有数字值的行

时间:2019-03-20 10:16:19

标签: sql oracle

我的X列的值如下:

619 19th St S, Oslo, AL 3522310, Spain
4538 S Harvard Ave, Roma, OK 74135, Germany
Golaa, CA , USA
Piri, SO, Italy

我只想过滤那些在列中没有数字的过滤器,所以查询结果应该是:

Golaa, CA , USA
Piri, SO, Italy

3 个答案:

答案 0 :(得分:2)

我会使用正则表达式,但是我认为这更简单:

SELECT *
FROM yourTable
WHERE NOT REGEXP_LIKE(x, '[0-9]');

您也可以不使用正则表达式:

WHERE x = TRANSLATE(x, 'a0123456789', 'a')

答案 1 :(得分:1)

您可以在Oracle中使用正则表达式进行模式匹配。

SELECT
  *
FROM
  yourTable
WHERE
  NOT REGEXP_LIKE(x, '[0-9]+')

这将排除x列中具有一个或多个数字的任何行。

答案 2 :(得分:0)

with s as (
select '619 19th St S, Oslo, AL 3522310, Spain' str from dual union all
select '4538 S Harvard Ave, Roma, OK 74135, Germany' from dual union all
select 'Golaa, CA , USA' from dual union all
select 'Piri, SO, Italy' from dual)
select *
from s
where str = translate(str, 'z1234567890', 'z');

STR
------------------------------
Golaa, CA , USA
Piri, SO, Italy