zoukankan      html  css  js  c++  java
  • SQL模糊查询

      SQL模糊查询

    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.
    [ ] 表示括号内所列字符中的一个(类似与正则表达式)。语句:
            SELECT * FROM user WHERE name LIKE ';[
    张李王]';
       
    将找出张三李三王三(而不是张李王三);
           
       
    [ ] 内有一系列字符(01234abcde之类的)则可略写为“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
       
       
    在查询前将待查字符串先经该函数处理即可。

  • 相关阅读:
    [CSP-S模拟测试]:军训队列(DP+乱搞)
    [CSP-S模拟测试]:stone(结论+桶+前缀和+差分)
    [CSP-S模拟测试]:bird(线段树优化DP)
    [CSP-S模拟测试]:maze(二分答案+最短路)
    [CSP-S模拟测试]:优化(贪心+DP)
    uoj132/BZOJ4200/洛谷P2304 [Noi2015]小园丁与老司机 【dp + 带上下界网络流】
    Miiler-Robin素数测试与Pollard-Rho大数分解法
    hdu4336 Card Collector 【最值反演】
    loj2542 「PKUWC2018」随机游走 【树形dp + 状压dp + 数学】
    loj2540 「PKUWC2018」随机算法 【状压dp】
  • 原文地址:https://www.cnblogs.com/jimeper/p/724651.html
Copyright © 2011-2022 走看看