什麼是刪除mySQL數據庫括號內的任何文本的最佳SQL查詢?無論文本中括號的位置如何(開始,中間,結束,無論什麼),我都想要一些有用的東西。我不在乎將文本保留在括號內,只是將其刪除。SQL查詢刪除括號內的文本?
謝謝!
什麼是刪除mySQL數據庫括號內的任何文本的最佳SQL查詢?無論文本中括號的位置如何(開始,中間,結束,無論什麼),我都想要一些有用的東西。我不在乎將文本保留在括號內,只是將其刪除。SQL查詢刪除括號內的文本?
謝謝!
似乎並沒有MySQL具有正則表達式替換函數,所以修改現有數據的最簡單方法可能是使用外部應用程序。然後在將其添加到數據庫之前保持所有新數據的清潔。
$result = $db->query();
while($row = $result->next){
$value = preg_replace('/\(.*?\)/', '', $row->value);
$db->query('UPDATE ... SET value = ' . $value . ' WHERE id = ' . $row->id);
}
注:如果PHP的正則表達式引擎支持懶惰重複匹配,我不記得(.*?
)
它使用PCRE,因此您可以通過添加'?'來使量詞非貪婪。 – ThiefMaster 2010-05-17 23:09:01
引用和'mysql_real_escape_string()'。 – bobince 2010-05-17 23:22:32
我想通了:
UPDATE table SET column = CONCAT(SUBSTR(column,1,LOCATE('(',
column)-1),SUBSTR(column,LOCATE(')', column)+1))
WHERE column LIKE '%(%' AND column LIKE '%)%'
在PHP
這適用於我的目的,但它會作出以下假設:
我建議調用代碼做數據處理的工作,離開的SQL查詢。 – akf 2010-05-17 22:57:21