SQL查询删除括号内的文本?

时间:2010-05-17 22:54:57

标签: mysql sql

删除mySQL数据库中括号内的任何文本的最佳SQL查询是什么?无论文本中括号的位置如何(开始,中间,结束,等等),我都希望能有效。我不关心将文本保留在括号内,只是删除它。

谢谢!

2 个答案:

答案 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的正则表达式引擎是否支持延迟重复匹配(.*?