2010-05-17 115 views
1

什麼是刪除mySQL數據庫括號內的任何文本的最佳SQL查詢?無論文本中括號的位置如何(開始,中間,結束,無論什麼),我都想要一些有用的東西。我不在乎將文本保留在括號內,只是將其刪除。SQL查詢刪除括號內的文本?

謝謝!

+0

我建議調用代碼做數據處理的工作,離開的SQL查詢。 – akf 2010-05-17 22:57:21

回答

0

似乎並沒有MySQL具有正則表達式替換函數,所以修改現有數據的最簡單方法可能是使用外部應用程序。然後在將其添加到數據庫之前保持所有新數據的清潔。

$result = $db->query(); 
while($row = $result->next){ 
    $value = preg_replace('/\(.*?\)/', '', $row->value); 
    $db->query('UPDATE ... SET value = ' . $value . ' WHERE id = ' . $row->id); 
} 

注:如果PHP的正則表達式引擎支持懶惰重複匹配,我不記得(.*?

+0

它使用PCRE,因此您可以通過添加'?'來使量詞非貪婪。 – ThiefMaster 2010-05-17 23:09:01

+0

引用和'mysql_real_escape_string()'。 – bobince 2010-05-17 23:22:32

2

我想通了:

 UPDATE table SET column = CONCAT(SUBSTR(column,1,LOCATE('(', 
    column)-1),SUBSTR(column,LOCATE(')', column)+1)) 
WHERE column LIKE '%(%' AND column LIKE '%)%' 

在PHP

這適用於我的目的,但它會作出以下假設:

  • 括號正確匹配
  • 只有一對括號的存在串(沒有嵌套等)