zoukankan      html  css  js  c++  java
  • MySQL like用法

    MySQL LIKE 语法

    LIKE运算符用于WHERE表达式中,以搜索匹配字段中的指定内容,语法如下:

    WHERE column LIKE pattern

    WHERE column NOT LIKE pattern

    在LIKE全面加上NOT运算符时,表示与LIKE相反的意思,即选择column不包含pattern的数据记录

    LIKE通常与通配符%一起使用,%表示通配pattern中出现的内容,而不加通配符%的LIKE语法,表示精确匹配,其实际效果等同于 = 等于运算符

    LIKE使用示例

    下面是一个使用LIKE查询的数据的例子:

    SELECT * FROM user WHERE username LIKE '小%';

    返回的查询结果:

    上面这个例子是找出所有username以"小"开头的记录

    注意:小%表示以小开头,而后面可以是任意字符,同样,%小,表示以”小”结尾,而%小%则表示包含“小”这个字符(并一同包含"%小"和"小%"这两种情况)

    MySQL LIKE 大小写

    MySQL LIKE 匹配字符的时候,默认情况下是不区分大小写的,如果在需要区分大小写的时候,可以加入BINARY操作符:

    SELECT * FROM username WHERE LIKE BINARY '%azz%'

    SELECT * FROM username WHERE LIKE BINARY '%Azz%'

    MySQL LIKE 中文匹配

    由于数据存储编码问题,在某些情况下,MySQL进行LIKE搜索返回的数据除了符合要求的数据外,往往还会返回许多不相干的数据,这时候也需要在LIKE后面加上BINARY操作符进行二进制比较

    SELECT * FROM username WHERE LIKE BINARY '%小%'

    注意:

    当LIKE匹配时加上BINARY操作符之后,则会严格区分英文大小写,因此检索的内容中如果出现中英文混合且需要忽略英文大小写的时候,就会遇见问题,这个时候可以引入MySQL中的UPPER()和COUNT()函数:

    UPPER() :将英文字符转成大写,同UCASE()

    CONCAT():将多个字符串连接成一个字符串

    所以,当我们要进行中英文混合匹配检索且要忽略英文大小写时候,可以用下面的语句:

    SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCAT('%',UPPER('a中文b'),'%');

    LIKE 的效率

    LIKE运算符要对字段数据进行逐一扫描匹配,实际执行的效率比较差

  • 相关阅读:
    指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处?
    什么是 spring bean?
    Java 中,Serializable 与 Externalizable 的区别?
    spring DAO 有什么用?
    spring 支持集中 bean scope?
    Spring 应用程序有哪些不同组件?
    什么是切点JoinPoint?
    @Required 注解有什么用?
    用什么命令对一个文件的内容进行统计?(行号、单词数、 字节数) ?
    区分构造函数注入和 setter 注入?
  • 原文地址:https://www.cnblogs.com/leeyongbard/p/9379255.html
Copyright © 2011-2022 走看看