Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySql选择查询中的正则表达式替换_Php_Mysql_Sql_Regex_Replace - Fatal编程技术网

Php MySql选择查询中的正则表达式替换

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将返回一个结

我有一个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%'