GVKun编程网logo

MySQL SELECT LIKE或REGEXP以在一条记录中匹配多个单词(mysql语句like匹配多个)

27

本文将为您提供关于MySQLSELECTLIKE或REGEXP以在一条记录中匹配多个单词的详细介绍,我们还将为您解释mysql语句like匹配多个的相关知识,同时,我们还将为您提供关于2020-12-

本文将为您提供关于MySQL SELECT LIKE或REGEXP以在一条记录中匹配多个单词的详细介绍,我们还将为您解释mysql语句like匹配多个的相关知识,同时,我们还将为您提供关于2020-12-02:mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记、MySQL REGEXP仅匹配整个单词、MySQL REGEXP单词边界[[:<:]] [[:>:]]和双引号、mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录的实用信息。

本文目录一览:

MySQL SELECT LIKE或REGEXP以在一条记录中匹配多个单词(mysql语句like匹配多个)

MySQL SELECT LIKE或REGEXP以在一条记录中匹配多个单词(mysql语句like匹配多个)

领域tablename包含“ Stylus Photo 2100”并带有以下查询

SELECT `name` FROM `table` WHERE `name` LIKE ''%Stylus 2100%''

我没有结果。我当然会搜寻

SELECT `name` FROM `table` WHERE `name` LIKE ''%Photo 2100%''

如何通过搜索“ Stylus 2100”选择记录?

谢谢

答案1

小编典典

好吧,如果您知道单词的顺序..您可以使用:

SELECT `name` FROM `table` WHERE `name` REGEXP ''Stylus.+2100''

您也可以使用:

SELECT `name` FROM `table` WHERE `name` LIKE ''%Stylus%'' AND `name` LIKE ''%2100%''

2020-12-02:mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记

2020-12-02:mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记

2020-12-02:mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?

福哥答案2020-12-04:答案来自此链接:
1.Mysql8.0以下版本
表类型为InnoDB引擎,这条记录的ID是15。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启MYSQL或者对表OPTIMIZE操作,都会使最大ID丢失。
表类型为MylSAM引擎,这条记录的ID是18。因为MylSAM表会把自增主键的最大ID记录到数据文件里面,重启MYSQL后,自增主键的最大ID也不会丢失。

2.Mysql8.0及以上版本
这条记录的ID是18,因为这个版本保存ID的值是在redo日志中的,重启之后是可以恢复的。

MySQL REGEXP仅匹配整个单词

MySQL REGEXP仅匹配整个单词

如何在mysql中匹配整个单词?

举例来说,如果我输入“ ”,我 希望匹配“ 劳拉 ”或“ 劳伦斯 ”。

以下是我的工作查询,将“ lau ”与“ laura ”匹配

SELECT *FROM(    SELECT        p.page_id,        p.page_url AS url,        p.page_title AS title,        SUBSTRING_INDEX(p.page_content_1, '' '', 500) AS content,        EXTRACT(DAY FROM p.page_backdate) AS date,        EXTRACT(MONTH FROM p.page_backdate) AS month,        EXTRACT(YEAR FROM p.page_backdate) AS year    FROM root_pages AS p    WHERE p.page_hide != ''1''    AND p.page_url != ''cms''    AND p.page_url != ''search''    ORDER BY p.page_created DESC) xWHERE x.content REGEXP  ''>[^<]*lau''

有解决我的主意REGEXP吗?

我使用的原因REGEXP ''>[^<]*searchtext''是我的内容具有html标签,例如,

<p>About us</p><ul><li>The team</li><li><a href="#">Introduction to gt</a></li><li><a href="#">Simon x</a></li><li><a href="#">Cathrin xe</a></li><li><a href="#">Patrick x</a></li><li><a href="#">Laurence x</a></li><li><a href="#">Tessa x</a></li>></ul>

我不想搜索可能落在诸如的标签内的单词<a href="http://laura.com">

答案1

小编典典

这行得通吗?

REGEXP’[^ <] * lau [[:>:]]’

根据文档,[[:::]]将匹配单词末尾的单词边界

MySQL REGEXP单词边界[[:<:]] [[:>:]]和双引号

MySQL REGEXP单词边界[[:<:]] [[:>:]]和双引号

如何解决MySQL REGEXP单词边界[[:<:]] [[:>:]]和双引号?

首先让我引用文档:

[[:<:]],[[:>:]]

这些标记代表单词边界。它们分别匹配单词的开头和结尾。单词是单词字符的序列,不能在单词字符之前或之后。单词字符是alnum类中的字母数字字符或下划线(_)。

从文档中,我们可以看到问题背后的原因,而原因并非由逃逸引起。问题是您试图[[:<:]]在字符串的开头匹配单词边界,这是行不通的,因为从文档中可以看到单词边界将单词字符与非单词字符分开,但是在您的情况下第一个字符是a",不是单词字符,因此没有单词边界,最后一个"和也是如此[[:>:]]

为了使它起作用,您需要对此表达式进行一些更改:

"[[:<:]]word[[:>:]]"
 ^^^^^^^    ^^^^^^^

注意,此时的字边界分隔非单词字符"从字字符w在开始和"d字符串的结尾。

如果您始终想在字符串的开头和结尾使用单词边界而不知道是否会有实际边界,则可以使用以下表达式:

([[:<:]]|^)"word"([[:>:]]|$)

这将匹配单词边界的开头或字符串的开头,并且匹配单词边界或字符串^结尾的结尾。我真的建议您研究要尝试匹配的数据,寻找常见的模式,如果它们不是适合工作的正确工具,请不要使用正则表达式。

SQL小提琴演示

解决方法

我正在尝试将某些全字词表达式与MySQL REGEXP函数进行匹配。当涉及到双引号时,就会出现问题。

MySQL文档说:“要在正则表达式中使用特殊字符的文字实例,请在其前面加上两个反斜杠()字符。”

但是这些查询都返回0:

SELECT ''"word"'' REGEXP ''[[:<:]]"word"[[:>:]]'';             -> 0
SELECT ''"word"'' REGEXP ''[[:<:]]\"word\"[[:>:]]'';           -> 0
SELECT ''"word"'' REGEXP ''[[:<:]]\\"word\\"[[:>:]]'';         -> 0
SELECT ''"word"'' REGEXP ''[[:<:]] word [[:>:]]'';             -> 0
SELECT ''"word"'' REGEXP ''[[:<:]][[.".]]word[[.".]][[:>:]]''; -> 0

我还能尝试得到1?还是这不可能?

mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录

mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录

关于MySQL SELECT LIKE或REGEXP以在一条记录中匹配多个单词mysql语句like匹配多个的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于2020-12-02:mysql中,一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记、MySQL REGEXP仅匹配整个单词、MySQL REGEXP单词边界[[:<:]] [[:>:]]和双引号、mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录等相关内容,可以在本站寻找。

本文标签: