Oracle 10 g新機能-正規表現


クエリーを行う場合、文字列を特定のルールで検索する必要がある場合があります.たとえば、3番目が5-8で、最後の4番目が「8888」のすべての電話をクエリーする必要がある場合があります.9 iの前に、複雑な条件を書く必要があります.

 
<!----> Select username from t_userinfo where (phonenumber like 135 % 8888 or phonenumber like 136 % 8888 or phonenumber like 137 % 8888 or phonenumber like 138 % 8888 ’) and length(phonenumber) = 13 ;

Javaプログラマーが正規表現を使って簡単にできるのがうらやましくなります.10 gでは、これ以上複雑にする必要はありません.oracleもいくつかの正規表現関数を提供し、開発者:REGEXP_を大幅に便利にしました.LIKE、REGEXP_REPLACE、REGEXP_INSTR、REGEXP_SUBSTRは、文字列のボケマッチング、置換、挿入、切り取りにそれぞれ使用される.正規表現のルールについては詳しく説明しませんが、関連資料を調べて入手できます.簡単な例を挙げる.上記の例を例にとると、クエリ文は次のように書くことができます.

 
<!----> create table t_userinfo (username varchar2 ( 10 ), phonenumber varchar2 ( 13 )); insert into t_userinfo values ( ' zhansan ' , ' 13012323434 ' ); insert into t_userinfo values ( ' lisi ' , ' 13512348888 ' ); insert into t_userinfo values ( ' wangwu ' , ' 13912328888 ' ); insert into t_userinfo values ( ' zhaoliu ' , ' 13743218888 ' ); insert into t_userinfo values ( ' sunqi ' , ' 1361234888 ' ); commit ;
SQL > Select username, phonenumber from t_userinfo where REGEXP_LIKE(phonenumber, ' 13[5-8][0-9][0-9][0-9][0-9]8{4} ' ); USERNAME PHONENUMBER -- -------- ------------- lisi 13512348888 zhaoliu 13743218888
===========
, , oracle 10g , , substr 。

   10g , , 。

  

SQL> select t.gdzt,regexp_substr(gdzt,'//CELL--[^,)]+'),regexp_substr(gdzt,'CELL [[:digit:]-)]+') from jcss_gd t;   GDZT REGEXP_SUBSTR(GDZT,'//CELL--[^ REGEXP_SUBSTR(GDZT,'CELL[[:DIG   -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------   460-00-28951-21003//CELL Disconnected//CELL--(JZ-BSS19:SITE-11:chan //CELL--(JZ-BSS19:SITE-11:changtuchezhan CELL 460-00-28951-21003   460-00-29020-24943//CELL Disconnected//CELL--(JZ-BSS20:SITE-55:yaog //CELL--(JZ-BSS20:SITE-55:yaoguai CELL 460-00-29020-24943   460-00-29020-24913//CELL Disconnected//CELL--(JZ-BSS20:SITE-52:sanx //CELL--(JZ-BSS20:SITE-52:sanxinggong CELL 460-00-29020-24913   //460-00-29011-25393//CELL Disconnected//CELL--(JZ-BSS33:SITE-39:xuet //CELL--(JZ-BSS33:SITE-39:xuetan CELL 460-00-29011-25393
付規則:^'は入力文字列の開始位置に一致し、角カッコ式で使用されます.この場合、文字セットが受け入れられないことを示します.'$'は、入力文字列の最後の位置に一致します.RegExpオブジェクトのMultilineプロパティが設定されている場合、$も'n'または'r'に一致します.  '.' 改行記号n以外の任意の単一文字を一致させる.  '?' 前のサブエクスプレッションを0回または1回一致させます.'+'は、前のサブ式に1回または複数回一致します.'*'は、前のサブエクスプレッションに0回または複数回一致します.'|'は、2つの項目の間の1つの選択を示します.例'^([a-z]+|[0-9]+)$'は、すべての小文字または数字を組み合わせた文字列を表す.'()'は、サブエクスプレッションの開始位置と終了位置をマークします.'[]'は中括弧式をマークします.'{m,n}'は正確に出現回数範囲であり、m=<出現回数<=n,'{m}'は出現m回を表し、'{m,}'は少なくともm回を表す.numはnumに一致し、numは正の整数である.取得した一致に対する参照.文字クラスタ:[:alpha:]]任意のアルファベット.[:digit:]]任意の数値.[::alnum:]]任意のアルファベットと数字.[:space:]]任意の白い文字.[::upper:]]任意の大文字.[:lower:]]任意の小文字.[::punct:]]任意の句読点.[[::xdigit:]]任意の16進数は、[0-9 a-fA-F]に相当する.各オペレータの演算優先度エスケープ(),(?:),(?=),[]カッコと角カッコ*,+,,?{n},{n,},{n,m}限定子^,$,anymetacharacter位置と順序|"または"操作