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%'; 
    
  • 相关阅读:
    U3D不同平台载入XML文件的方法——IOS MAC Android
    C++使用规范小记
    设置角色对象可见性
    编辑器菜单操作
    U3D资源动态加载异步方案探究
    Animation动画
    Unity3D失去焦点时继续渲染
    C#打开当前目录
    组件模式代码实践(C#版本)
    Unity3D批处理脚本
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15528656.html
Copyright © 2011-2022 走看看