• python多条件模糊查询


    在sql语句中模糊查询是通过4种符号进行字符的匹配来实现

    1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
    比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
    将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
    另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
    SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
    若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'

    虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

    2,_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
    比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
    只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

    再比如 SELECT * FROM [user] WHERE u_name LIKE '三__'; 只找出“三脚猫”这样name为三个字且第一个字是“三”的;

    3,[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
    比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三' 将找出“张三”、“李三”、“王三”(而不是“张李王三”);
    如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
    SELECT * FROM [user] WHERE u_name LIKE '老[1-9]' 将找出“老1”、“老2”、……、“老9”;

    4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

    而在python中为了实现数据的传递 往往使用%s 来进行数据在sql语句中的匹配

    这样就会造成这两个字符的歧义

    所以使用此方法来进行转义 

    sql = '''select * from paper where title like '%%%%%s%%%%' and abstract like '%%%%%s%%%%' and keywords like '%%%%%s%%%%'
    ''' % (title, abstract, keywords)

    其中可以正常对数据库进行模糊多条件查询
  • 相关阅读:
    2017寒假练习赛总结(实时更新)
    NOIP
    挖坑--总结
    BZOJ3709: [PA2014]Bohater
    BZOJ3714: [PA2014]Kuglarz
    BZOJ2276: [Poi2011]Temperature
    VIJOS P1543极值问题
    BZOJ2749: [HAOI2012]外星人
    BZOJ2173: 整数的lqp拆分
    BZOJ1100: [POI2007]对称轴osi
  • 原文地址:https://www.cnblogs.com/huangmouren233/p/14735379.html
Copyright © 2020-2023  润新知