前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL LIKE()函数

MySQL LIKE()函数

原创
作者头像
Power
发布2025-03-05 11:34:10
发布2025-03-05 11:34:10
1800
代码可运行
举报
运行总次数:0
代码可运行

说明

使用一个SQL模式进行模式匹配。返回1(TRUE)或0(FALSE)。如果expr或pat是NULL,结果是NULL。

模式不需要是一个字面字符串。例如,它可以被指定为一个字符串表达式或表列。在后一种情况下,该列必须被定义为MySQL字符串类型之一。

根据SQL标准,LIKE在每个字符的基础上进行匹配,因此它可以产生与“=”比较运算符不同的结果。参考下面的示例。

代码语言:javascript
代码运行次数:0
复制
mysql> SELECT 'ä' LIKE 'ae' COLLATE latin1_german2_ci;
+-----------------------------------------+
| 'ä' LIKE 'ae' COLLATE latin1_german2_ci |
+-----------------------------------------+
|                                       0 |
+-----------------------------------------+
mysql> SELECT 'ä' = 'ae' COLLATE latin1_german2_ci;
+--------------------------------------+
| 'ä' = 'ae' COLLATE latin1_german2_ci |
+--------------------------------------+
|                                    1 |
+--------------------------------------+

特别要注意的是,在LIKE中尾部的空格总是有意义的。这与用=操作符进行的比较不同,在非二进制字符串(CHAR、VARCHAR和TEXT值)中,尾部空格的重要性取决于用于比较的排序的pad属性。

使用LIKE,你可以在模式中使用以下两个通配符。

  • %匹配任何数量的字符,甚至是零字符。
  • _ 准确匹配一个字符。
代码语言:javascript
代码运行次数:0
复制
mysql> SELECT 'www.02405.com!' LIKE 'www.02405.com_';
        -> 1
mysql> SELECT 'https://www.02405.com!' LIKE '%www.02405.com%';
        -> 1

如果要匹配含有通配符的文字实例,请在它前面加上转义字符。如果你没有指定ESCAPE字符,就会假定为\,除非启用了NO_BACKSLASH_ESCAPES SQL模式。在这种情况下,不会使用转义字符。

  • \%匹配一个%字符。
  • \匹配一个_字符。
代码语言:javascript
代码运行次数:0
复制
mysql> SELECT 'David!' LIKE 'David\_';
        -> 0
mysql> SELECT 'David_' LIKE 'David\_';
        -> 1

要指定一个不同的转义字符,请使用ESCAPE子句。

代码语言:javascript
代码运行次数:0
复制
mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
        -> 1

转义序列应该是一个长的字符来指定转义字符,或者是空的来指定不使用转义字符。这个表达式在执行时必须评估为一个常数。如果启用了NO_BACKSLASH_ESCAPES SQL模式,序列不能为空。

下面的语句说明了字符串比较是不区分大小写的,除非其中一个操作数是区分大小写的(使用区分大小写的整理方式或者是二进制字符串)。

代码语言:javascript
代码运行次数:0
复制
mysql> SELECT 'abc' LIKE 'ABC';
        -> 1
mysql> SELECT 'abc' LIKE _utf8mb4 'ABC' COLLATE utf8mb4_0900_as_cs;
        -> 0
mysql> SELECT 'abc' LIKE _utf8mb4 'ABC' COLLATE utf8mb4_bin;
        -> 0
mysql> SELECT 'abc' LIKE BINARY 'ABC';
        -> 0

作为标准SQL的扩展,MySQL允许对数字表达式进行LIKE。

代码语言:javascript
代码运行次数:0
复制
mysql> SELECT 10 LIKE '1%';
        -> 1

MySQL在字符串中使用C转义语法(例如,用\n表示换行字符)。如果你想让一个LIKE字符串包含一个字面的\,你必须把它加倍。(除非启用NO_BACKSLASH_ESCAPES SQL模式,在这种情况下不使用转义字符)。例如,要搜索\n,指定为\n。如果要搜索 \,则指定为 \\;这是因为反斜线会被解析器剥离一次,并且在模式匹配时再次剥离,只留下一个反斜线进行匹配。 异常情况。在模式字符串的末尾,反斜杠可以被指定为\。在字符串的末尾,反斜线代表自己,因为后面没有任何东西可以转义。假设一个表包含以下数值。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档