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%'; 
    
  • 相关阅读:
    IIS配置ThinkPHP重写
    Redis安装
    ubuntu学习笔记
    PHP连接MySQL数据库SELinux中一些setsebool的用法
    centos+frp
    centos7.6安装nginx
    在CentOS 7-8上安装PHP 8.0
    centos7安装.net5.0(core)
    阿里云服务器配置清单
    阿里云服务器centos7.6安装mysql8.0.23
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15528656.html
Copyright © 2011-2022 走看看