-- 查詢value中不是純數字的記錄
select * from fzq ;
select * from fzq where regexp_like(value,'^[[:digit:]]+$');--以數字開頭,並且匹配多次,直到結尾
select * from fzq where regexp_like(value,'^[[:digit:]]+');--以數字開頭,並且含有乙個或多個的結果集
-- 查詢value中不包含任何數字的記錄。
select * from fzq where regexp_like(value,'^[^[:digit:]]+$');--以非數字開頭,匹配多次直到結尾
--查詢以12或者1b開頭的記錄.區分大小寫。
select * from fzq where regexp_like(value,'^1[2b]');
--查詢以12或者1b開頭的記錄.不區分大小寫。
select * from fzq where regexp_like(value,'^1[2b]','i');
-- 查詢資料中包含空白的記錄。
select * from fzq where regexp_like(value,'[[:space:]]');
--查詢全是小寫字母或者數字的記錄。
select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');
--查詢任何包含標點符號的記錄。
select * from fzq where regexp_like(value,'[[:punct:]]');
--查詢value中含有以1開頭60結束字串的記錄並且長度是7位
select * from fzq where value like '1____60';
select * from fzq where regexp_like(value,'1....60');
--查詢value中以1開頭60結束的記錄並且長度是7位並且全部是數字的記錄。
select * from fzq where regexp_like(value,'^1[0-9]60$');
--也可以這樣實現,使用字符集。
select * from fzq where regexp_like(value,'^1[[:digit:]]60$');
匹配serv_number欄位全是數字的資料行
1:正規表示式(10g版本新加入的功能)
select * from vgopbme.vgop_dept_wh_20150416 t where regexp_like(t.serv_number ,'^[0-9]+$');
select * from vgopbme.vgop_dept_wh_20150416 t where regexp_like(t.serv_number ,'^[[:digit:]]+$');
2:通過ascii碼判斷是否數字,介於[48, 57]之間,(ascii('0') = 48, ascii('9') = '57')
--通過ascii碼判斷是否數字,介於[48, 57]之間,(ascii('0') = 48, ascii('9') = '57')
declare
str varchar2(10) := '123a';
val numeric(10);
i int;
k int;
flag boolean;
begin
flag := true;
for i in 1..10 loop --新密碼是否6位數字
k := ascii(substr(str, i, 1));
if k < 48 or k > 57 then
flag := false;
end if;
end loop;
if flag = true then
dbms_output.put_line(str || '是[0-9]的數字序列');
else
dbms_output.put_line(str || '不是[0-9]的數字序列');
end if;
end;
3:呼叫cast函式嘗試強制轉換成numeric或number,不是合法數字串即拋異常
declare
str varchar2(10) := '123';
val numeric(10);
begin
val := cast(str as numeric);
dbms_output.put_line(str || '是[0-9]的數字序列');
exception
when value_error then -- 字串轉實數錯誤
--dbms_output.put_line(sqlcode || ', ' || sqlerrm);
dbms_output.put_line(str || '不是[0-9]的數字序列');
end;
4:呼叫translate函式,剔除所有[0-9]數字後,看是否為空串
declare
str varchar2(10) := '123abc';
begin
if replace(translate(str, '0123456789', '0'), '0', '') is null then
dbms_output.put_line(str || '是[0-9]的數字序列');
else
dbms_output.put_line(str || '不是[0-9]的數字序列');
end if;
end;
translate是replace所提供的功能的乙個超集。
一、語法:
translate(string,from_str,to_str)
二、目的
將(所有出現的)from_str中的每個字元替換為to_str中的相應字元。
如果from_str比to_str長,那麼在from_string的後邊超出的部分都被替換為空值,因為它們沒有相應的替換字元。
to_str不能為空。oracle將空字串解釋為null,並且如果translate中的任何引數為null,那麼結果也是null .
select translate('abcdefghij','abcdef','123456') from dual;
translate (
--------------
123456ghij
select translate('護照01浙江2 3昆 山4蘇 3', '0123456789','a') from dual;--護照a浙江 昆 山蘇
--將0替換為a,並且將1-9刪除;
select translate('護照01浙江2 3昆 山4蘇 3', '0123456789','ab') from dual;--護照ab浙江 昆 山蘇
--將0替換為a,1替換為b,將2-9刪除;
select translate('護照01浙江2 3昆 山4蘇 3', '2301456789','ab') from dual;--護照浙江a b昆 山蘇 b
--將2替換為a,3替換為b,剔除01456789;
正規表示式例子
前言 regular expressions 正規表示式,以下用re稱呼 對小弟來說一直都是神密的地帶,看到一些網路上的大大,簡單用re就決解了某些文字的問題,小弟便興起了學一學re的想法,但小弟天生就比較懶一些,總希望看有沒有些快速學習的方式,於是小弟又請出google大神,借由祂的神力,小弟在網...
正規表示式例子
include regex.hpp include include include include inttest regex match d d d fixed telephone std regex re pattern std vector str std regex match 判斷乙個正規...
正規表示式 例子學習
正規表示式是乙個程式設計的藝術,很難除錯,學習和理解,但強大的功能,仍吸引不少開發者編寫正規表示式。讓我們探索一下下面10個實際應用中的正規表示式。1.使用者名稱正規表示式模式 a z0 9 行開始 a z0 9 匹配列表中的字元,a z,0 9,下劃線,連字元 長度至少3個字元,最大長度為15 行...