2013-05-04 76 views
0

我試圖檢查變量'prodno'是否包含任何非整數字符。 如果有,則刪除非整數字符。SQL如何檢查變量是否包含非整數字符並刪除非整數字符

-- 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]%'; 

回答

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]+') 
+0

非常感謝! – 2013-05-05 06:04:09

相關問題