使用Oracle正則表達式在500W條數據裏面選取吉祥號

     最近作一個項目,須要在7位數字串中,按下列規則選取吉祥號:
一、七位序列號中不能出現數字4

二、七位數字從右向左數,至少要出現3位同樣的數字,並且同樣的數字只能是六、八、9中的任意一個,如1235666。
優化

三、七位數字能夠出現所有相同的數字,如:11111十一、222222二、333333三、555555五、666666六、7777777 項目

      在Oracle 10g裏面,咱們能夠輕鬆實現上述要求,一條SQL語句就搞定,以下: di

   SELECT *
     FROM a
    WHERE    REGEXP_LIKE (id, '[^4]{4}[6]{3,6}$')
          OR REGEXP_LIKE (id, '[^4]{4}[8]{3,6}$')
          OR REGEXP_LIKE (id, '[^4]{4}[9]{3,6}$')
          OR REGEXP_LIKE (id, '^([0-35-9])\1{6}$');

      若是能有優化意見,歡迎隨時提出~ 數字

相關文章
相關標籤/搜索