0

変数「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]%';
4

1 に答える 1

2

LIKEあなたが考えるように範囲をサポートしていません.andを使用したワイルドカード検索のみをサポートしてい%ます_. これには正規表現を使用する必要があります

非整数値を削除するには、次を使用します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]+')
于 2013-05-04T12:51:28.383 に答える