2012-03-04 73 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