zoukankan      html  css  js  c++  java
  • python测试开发django170.ORM查询之contains和icontains 上海

    前言

    平常用ORM大部分使用的是get、filter、exclude这三种能满足基本的需求,有时我们需要满足一些复杂的查询场景,在页面上传不同参数满足查询需求。
    ORM 条件查询使用field__结合 condition 的方式来使用的,比如查询包含指定的字符,可以用contains和icontains。

    contains和icontains 区别

    比如有下面这张表

    MyDjango>python manage.py shell
    >>> Product.objects.filter(name__contains='yy')
    <QuerySet [<Product: Product object (2)>, <Product: Product object (3)>]>
    >>> Product.objects.filter(name__icontains='yy')
    <QuerySet [<Product: Product object (2)>, <Product: Product object (3)>, <Product: Product object (4)>]>
    >>>
    

    contains表示精确大小写,icontains中的i表示忽略大小写

    • filter(name__contains='yy') 是查询name包含小写的yy的内容
    • filter(name__icontains='yy')是查询name包含yy的字符,不区分大小写

    对应SQL语句

    SQL 查询like 后面带上 BINARY 就是精确大小写查询

    • name__contains='yy' 对应sql语句 where name like BINARY '%yy%'
    • name__icontains='yy' 对应SQL 语句 where name like '%yy%'
    /* BINARY精确大小写yy */
    select * from yoyo_product where name like BINARY '%yy%';
    
    /* 忽略大小写yy */
    select * from yoyo_product where name like '%yy%'; 
    
  • 相关阅读:
    背包问题_模板
    hihoCoder week14 无间道之并查集
    hihoCoder week13 最近公共祖先·一
    图片处理工具类 util
    算法导论 第二章 递归与分治
    hihoCoder week12 刷油漆
    hihoCoder week11 树中的最长路
    hihoCoder week10 后序遍历
    hihoCoder week8 状态压缩·一
    hihoCoder week7 完全背包
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15528656.html
Copyright © 2011-2022 走看看