我的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
答案 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