Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否使用preg match更新SQL表中的每一行?_Php_Mysql_Sql_Preg Replace - Fatal编程技术网

Php 是否使用preg match更新SQL表中的每一行?

Php 是否使用preg match更新SQL表中的每一行?,php,mysql,sql,preg-replace,Php,Mysql,Sql,Preg Replace,我正在对我的数据库做一些大的更改,所以我需要用一些新的文本替换大量的文本,但是只有当某个单词存在时 Table *-----------------------------------------------* | id | name | adress | town | *-----------------------------------------------* 我有一张这样的桌子。我想替换表中每一行的“address”和“town”,其中“t

我正在对我的数据库做一些大的更改,所以我需要用一些新的文本替换大量的文本,但是只有当某个单词存在时

  Table
*-----------------------------------------------*
|    id    |    name   |    adress   |   town   |
*-----------------------------------------------*
我有一张这样的桌子。我想替换表中每一行的“address”和“town”,其中“town=newyork”(例如)

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

有人能帮我吗?我想我可以通过某种方式使用PHP中的preg match和replace函数来实现这一点,或者完全可以使用SQL命令来实现

谢谢你们

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

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

MySQL不支持正则表达式,但它有一个like操作符(有关详细信息,请参阅),它支持占位符“%”和“u”,其中“%”匹配任意数量的字符(甚至0),而“u”只匹配一个字符(类似于“*”和“?”文件名通配符)

where town like "New York%"
对于字符串中任何包含“New York”的字符串

where town like "%New York%"

我认为这是一个准确的答案,无需@2提供更多或更清晰的信息。愚蠢的问题,但这种格式是否不区分大小写?
New York
New York
New York
New York
?@Smamatti这取决于数据库系统(MySQL区分大小写,正如Francois B.addresses一样,我相信Oracle和PostgreSQL区分大小写,SQL Server不区分大小写);你可以在谷歌上搜索:“site:stackoverflow.com SQL like case sensitive”…是的。在MySQL文档中查找
RLIKE
/
REGEXP
。不过,这并不是PCRE的问题。