gpt4 book ai didi

mysql - 将 "SQL SELECT STATEMENT"嵌套为 REGEX 运算符/内部

转载 作者:行者123 更新时间:2023-11-29 13:19:40 25 4
gpt4 key购买 nike

假设我有一个名为 People 的表,其中包含 PersonIDName 列,我可以选择一个人的姓名,例如:

SELECT Name FROM People WHERE PersonID = 1

在此示例中将返回'John'

我还有另一个名为 ForumPosts 的表,其中包含字段 ForumPostIDPostContent,其中 PostContent 只是 TEXT ,就本示例而言,可以是类似 “我的名字是 John”“John 喜欢足球”

现在我想执行一个基于给定初始 PersonID 的查询,该查询将返回 ForumPosts 中人员姓名与 PostContent 字段中包含的单词匹配的所有行。

匹配单个单词(或在本例中为人名)的正则表达式是:

[[:<:]]*Person'sNameHere*[[:>:]]

所以理想情况下我希望我的 SQL 逻辑是这样的:

Select * FROM ForumPosts WHERE PostContent 
REGEX [[:<:]](SELECT Name FROM People WHERE PersonID = '1') [[:>:]]

但是我不确定这是否可能或我将如何构建查询。

最佳答案

听起来您想动态创建正则表达式。正则表达式只是 MySQL 中的字符串,因此您只需使用 CONCAT 即可创建所需的字符串。

SELECT *
FROM ForumPosts
WHERE PostContent
REGEXP CONCAT('[[:<:]]',(SELECT Name FROM People WHERE PersonID = '1'),'[[:>:]]')

更好的是,您可以使用 JOIN 而不是子查询

SELECT ForumPosts.*
FROM ForumPosts
JOIN People ON PersonID = 1
WHERE PostContent REGEXP CONCAT('[[:<:]]',People.Name,'[[:>:]]')

演示:http://sqlfiddle.com/#!2/40828/1

关于mysql - 将 "SQL SELECT STATEMENT"嵌套为 REGEX 运算符/内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com