很抱歉,“让我为你辩护”-Question,但我找不到答案。
我想从数据库中的列中删除specfic元素。所以我用以下代码搜索它们:(它工作正常)
$sql = "SELECT list_id, list_domains
FROM list
WHERE list_domains REGEXP '[\s]*[a-z-]*\.[a-z/\.\?=]*.#".$number."#'";
$result = $db->prepare( $sql );
$result->execute();
$result->bind_result( $list_id, $list_domains );
$result->store_result();
现在我想删除/替换这些列中找到的元素。所以我使用以下代码:
$sql = "UPDATE list
SET list_domains = REPLACE(list_domains, '[\s]*[a-z-]*\.[a-z/\.\?=]*.#".$number."#', '')
WHERE list_domains REGEXP '[\s]*[a-z-]*\.[a-z/\.\?=]*.#".$number."#'";
$result = $db->prepare( $sql );
$result->execute();
$result->store_result();
不起作用。我也试过
REPLACE(list_domains, REGEXP '[\s]*[a-z-]*\.[a-z/\.\?=]*.#".$number."#', '')
或
REGEXP_REPLACE(list_domains, '[\s]*[a-z-]*\.[a-z/\.\?=]*.#".$number."#', '')
但这些行只会产生错误。
如何使用MySQLi删除/替换特定的正则表达式?
感谢您的每一个建议!
答案 0 :(得分:1)
REPLACE()
不允许正则表达式搜索。
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
如果你想用正则表达式操纵字符串,SELECT
行,在你自己的代码中进行操作,然后发出UPDATE
语句来更新值,指定最终值。