使用preg_match更新SQL表中的每一行?

时间:2012-03-04 11:17:18

标签: php mysql sql preg-replace

我正在对我的数据库进行一些重大更改,因此我需要用一些新文本替换大量文本,但只有在存在某个单词时才会替换。

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

我有一张这样的桌子。我想在表格的每一行中替换“地址”和“城镇”,例如“town = new york”。(例如)。

因此,每当“纽约”文本出现在“城镇”中时,地址和城镇都应该被其他东西取代。只有一次 - 当我运行脚本时。

任何人都可以帮我吗?我想我可以使用preg匹配并以某种方式替换PHP中的函数,或者它可以完全用SQL命令完成吗?

谢谢你们

2 个答案:

答案 0 :(得分:3)

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

或者,WHERE UPPER(town) like UPPER('%new york%')不区分大小写。

答案 1 :(得分:0)

MySQL不支持正则表达式,但它有一个 like 运算符(详见here),它支持占位符“%”和“_”,其中“%”匹配任意数量的字符(甚至0),“_”恰好匹配一个字符(类似于“*”和“?”文件名通配符)。因此,要在开头找到包含“纽约”的字符串,请使用

where town like "New York%"

表示字符串中包含“New York”的字符串

where town like "%New York%"