我正在尝试检查变量'prodno'是否包含任何非整数字符。 如果是,则删除非整数字符。
-- Expected output:
prodno A18
prodno K67
drop table ass3_product cascade constraints;
create table ass3_product (
prodno varchar2(30) primary key,
prodname varchar2(30),
purchasecost number(6,2)
);
insert into ass3_product values ('23','Prod One', 10);
insert into ass3_product values ('54','Prod Two', 50);
insert into ass3_product values ('A18','Prod Three', 35);
insert into ass3_product values ('9','Prod Four', 4);
insert into ass3_product values ('K67','Prod Five', 15);
SELECT prodno
FROM ass3_product
WHERE prodno like '%[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]%';
答案 0 :(得分:2)
LIKE
不支持范围 - 它仅支持使用%
和_
进行通配符搜索。您需要为此
要删除非整数值,请使用regexp_replace
:
SELECT regexp_replace(prodno, '\D', '')
FROM ass3_product
要测试此条件,您可以将替换结果与原始值进行比较:
SELECT regexp_replace(prodno, '\D', '')
FROM ass3_product
WHERE prodno <> regexp_replace(prodno, '\D', '');
另一种可能性是使用regexp_like。以下将选择prodno不以数字开头的所有行:
SELECT regexp_replace(prodno, '\D', '')
FROM ass3_product
where regexp_like(prodno, '^[^0-9]+')