删除mySQL数据库中括号内的任何文本的最佳SQL查询是什么?无论文本中括号的位置如何(开始,中间,结束,等等),我都希望能有效。我不关心将文本保留在括号内,只是删除它。
谢谢!
答案 0 :(得分:2)
我明白了:
UPDATE table SET column = CONCAT(SUBSTR(column,1,LOCATE('(',
column)-1),SUBSTR(column,LOCATE(')', column)+1))
WHERE column LIKE '%(%' AND column LIKE '%)%'
这适用于我的目的,但它做出以下假设:
答案 1 :(得分:0)
MySQL似乎没有正则表达式替换功能,因此修改现有数据的最简单方法可能是使用外部应用程序。然后在将新数据添加到数据库之前保持所有新数据的清洁。
PHP中的:
$result = $db->query();
while($row = $result->next){
$value = preg_replace('/\(.*?\)/', '', $row->value);
$db->query('UPDATE ... SET value = ' . $value . ' WHERE id = ' . $row->id);
}
注意:我不记得PHP的正则表达式引擎是否支持延迟重复匹配(.*?
)