2013-02-16 112 views
0

我有一個大型的MYSQL表,包含未知數量的括號內的數字。在MYSQL中刪除含有未知內容的括號表

例:「現在的地球是[1]空虛混沌......」

的數量可以達到3個位數。

當我不知道數字是什麼時,是否可以編寫一個刪除括號和數字的查詢?

+1

是的,例如使用正則表達式。 – str 2013-02-16 22:56:17

+1

@str MySQL本身不支持regex替換。除非安裝了非標準的用戶功能,否則必須使用非常討厭的字符串Manip或應用程序端來完成 – 2013-02-16 23:00:56

回答

1

試試這個,希望它可以幫助你:

<?php 
$str = "Just random [4] stuff with [56] random nums [000]" ;  
$clean = preg_replace("/(\[[0-9]+\])/", "", $str) ; 

echo $clean ; //Outputs: Just random stuff with random nums 
?> 

從數據庫中獲取數據,並做了更換。

或者您也可以編寫一個腳本來修改您的數據庫值: 使用SELECT獲取標識符和字符串。 然後執行更換。使用UPDATE更新數據庫中的表格。

0

如果它是你可以做以下的一次性件事:

  • 使用sed做你更換sed -e 's/\[\([0-9]*\)\]//g' mytabledump.sql > mytableclean.sql
  • 截斷你的表mysql -u user -p dbname -e "TRUNCATE TABLE mytable;"
  • 進口數據轉儲你的表到一個文件mysqldump -u user -p dbname --no-create-info mytable > /tmp/mytabledump.sql
  • mysql -u user -p dbname < /tmp/mytableclean.sql

Y你可能需要稍微調整一下regexp。