Oracle SQL模糊查詢的文法為

來源:互聯網
上載者:User

    SQL模糊查詢的文法為
    “SELECT column FROM table WHERE column LIKE 'pattern';”。


   
    SQL提供了四種匹配模式:
    1. % 表示任意0個或多個字元。如下語句:
        SELECT * FROM user WHERE name LIKE '%三%';
    將會把name為“張三”,“三腳貓”,“唐三藏”等等有“三”的全找出來;
   
    2. _ 表示任意單個字元。語句:
        SELECT * FROM user WHERE name LIKE '_三_';
    只找出“唐三藏”這樣name為三個字且中間一個字是“三”的;
        SELECT * FROM user WHERE name LIKE '三__';
    只找出“三腳貓”這樣name為三個字且第一個字是“三”的;
   
    3. [ ] 表示括弧內所列字元中的一個(類似與Regex)。語句:
        SELECT * FROM user WHERE name LIKE '[張李王]三';
    將找出“張三”、“李三”、“王三”(而不是“張李王三”);
       
    如 [ ] 內有一系列字元(01234、abcde之類的)則可略寫為“0-4”、“a-e”
        SELECT * FROM user WHERE name LIKE '老[1-9]';
    將找出“老1”、“老2”、……、“老9”;
    如要找“-”字元請將其放在首位:'張三[-1-9]';
   
    4. [^ ] 表示不在括弧所列之內的單個字元。語句:
        SELECT * FROM user WHERE name LIKE '[^張李王]三';
    將找出不姓“張”、“李”、“王”的“趙三”、“孫三”等;
        SELECT * FROM user WHERE name LIKE '老[^1-4]';
    將排除“老1”到“老4”尋找“老5”、“老6”、……、“老9”。
   
    !最後是重點!

    由於萬用字元的緣故,導致我們查詢特殊字元“%”、“_”、“[”、“';”的語句無法正常實現,而把特殊字元用“[ ]”括起便可正常查詢。據此我們寫出以下函數:
   
    function sqlencode(str)
     str=replace(str,"';","';';")
     str=replace(str,"[","[[]") ';此句一定要在最先
     str=replace(str,"_","[_]")
     str=replace(str,"%","[%]")
     sqlencode=str
    end function
   
    在查詢前將待查字串先經該函數處理即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.