mysql - 更新表使用regexp

时间:2011-12-20 04:18:09

标签: mysql

SELECT id FROM people WHERE id REGEXP 'id-(\d)*';

结果

id-1
id-2
id-3

以上查询有效,但是当我在下面运行更新查询时,它不会影响任何行

UPDATE people SET id = REPLACE(id, 'id-(\d)*', 'id-4');
0 row(s) affected

有人可以为我解释,有什么不对?

3 个答案:

答案 0 :(得分:1)

REPLACE()不搜索正则表达式。 试试这个。但是某些数据库支持regexp_replace()函数。

This works for oracle, PostgreSQL。     It doesn't work for MySQL

 UPDATE people  SET id  = regexp_replace(id ,'id-(\d)*' , 'id-4');

答案 1 :(得分:0)

REPLACE不使用正则表达式,只使用vanilla字符串。您正在搜索文字字符串'id-(\d)*',而不是'id-'后跟任意数字的数字。据推测,您的数据库中没有这么奇怪的字符串。

答案 2 :(得分:0)

REPLACE()会替换文本。 MySQL中没有正则表达式替换。使用某些服务器端脚本执行REGEX会更好。