Php MySql选择查询中的正则表达式替换
我有一个SQL查询:Php MySql选择查询中的正则表达式替换,php,mysql,sql,regex,replace,Php,Mysql,Sql,Regex,Replace,我有一个SQL查询: 从页面标题为“paul\u mccartney”的页面中选择* 但通常在页面标题中,值类似于“保罗•麦卡特尼(音乐家)”。在这种情况下,我得到NULL返回。我想用regex替换(和)之间的所有内容,包括(): 但它不起作用。我的想法可能吗?如何使用?虽然您的问题是关于使用RegEx,但您是否研究过MySQL全文搜索功能 如果您的行是这样的,请使用以下教程: Id title 1 paul_mccartney (musician) 使用提供的示例SQL将返回一个结
从页面标题为“paul\u mccartney”的页面中选择*
但通常在页面标题中,值类似于“保罗•麦卡特尼(音乐家)
”。在这种情况下,我得到NULL
返回。我想用regex替换(
和)
之间的所有内容,包括()
:
但它不起作用。我的想法可能吗?如何使用?虽然您的问题是关于使用RegEx,但您是否研究过MySQL全文搜索功能
如果您的行是这样的,请使用以下教程:
Id title
1 paul_mccartney (musician)
使用提供的示例SQL将返回一个结果:
SELECT * FROM articles
WHERE MATCH (title) AGAINST ('paul_mccartney' IN BOOLEAN MODE)
您可以尝试类似于
的,看看它是如何工作的:
SELECT * FROM pages WHERE page_title LIKE '%paul_mccartney%'
mysql正则表达式只能匹配。它们基本上是一个奇特的,其中。除了真/假,他们不返回任何东西,他们不捕获,等等。。。你不能replace()
正则表达式的结果-你基本上要做replace(true/false',page\u title)
输入“paul\u mcartney”来自哪里?是用户输入吗?@MarcB我不想替换。我只是想找到一种方法,将'paul\u mccartney(音乐家)
输入nethertheless添加到'paul\u mccartney'
。就像我说的,你不能在mysql中这样做。正则表达式只匹配,replace
不接受正则表达式,也不能处理regex()
返回的内容,因为regex()
只返回真/假,而不是实际值。如果…(…)
东西只出现在字符串的末尾,为什么不。。。像“paul_mccartney%”这样的页面标题
?我已经添加了一个答案,介绍了如何使用mysql搜索来实现这一点,但正如上面其他人所说,您可以使用:从页面标题像“%paul_mccartney%”这样的页面中选择*
,这样就可以正常工作了
SELECT * FROM pages WHERE page_title LIKE '%paul_mccartney%'