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
有人可以为我解释,有什么不对?
答案 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会更好。