2012-03-04 75 views
1

我對數據庫做了一些很大的改動,所以我需要用一些新的文本替換很多文本,但只有當某個單詞存在時才需要。使用preg匹配更新SQL表中的每一行?

Table 
*-----------------------------------------------* 
| id | name | adress | town | 
*-----------------------------------------------* 

我有一張這樣的桌子。我想在表格的每一行代替「地址」和「城鎮」,例如「城鎮=紐約」(例如)。

因此,每當「城鎮」中出現「紐約州」這個文字時,地址和城鎮都應該換成別的東西。只有一次 - 當我運行腳本。

任何人都可以幫助我嗎?我想我可以用某種方式使用preg匹配和替換PHP中的函數,或者可以純粹用SQL命令完成它?

謝謝你們

回答

3
UPDATE theTable 
SET name = 'xxx', 
    adress = 'xxx' 
WHERE town LIKE '%new york%' 

或者,WHERE UPPER(town) like UPPER('%new york%')是不區分大小寫。

+0

我認爲這是一個正確的答案,可以給出沒有@ 2通過給更多或更清楚的信息。 – 2012-03-04 11:22:24

+0

愚蠢的問題,但LIKE的格式不區分大小寫? 「紐約」,「紐約」,「紐約」,「紐約」? – Smamatti 2012-03-04 11:22:38

+0

就這麼簡單,謝謝! – 2by 2012-03-04 11:31:18

0

MySQL不支持正則表達式,但它有一個像操作(見here瞭解詳細信息)支持的佔位符「%」和「_」,其中「%」任何數目的字符匹配(甚至0 )和「_」恰好匹配一個字符(類似於「*」和「?」文件名通配符)。因此,要找到包含「紐約」開頭的字符串,請使用

where town like "New York%" 

包含「紐約」中的字符串的任何地方串

where town like "%New York%" 
+0

是的,它確實。在MySQL文檔中查找'RLIKE' /'REGEXP'。雖然,這不是PCRE,這可能是一種痛苦。 – Walf 2012-09-06 05:57:55