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有人能给我解释一下,有什么问题吗?
发布于 2011-12-20 12:23:23
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');发布于 2011-12-20 12:21:46
REPLACE不使用正则表达式,只使用普通字符串。您要搜索的是文字字符串'id-(\d)*',而不是后跟任意位数的'id-'。想必,您的数据库中没有这样奇怪的字符串。
发布于 2011-12-20 12:23:08
REPLACE()进行文本替换。在MySQL中没有正则表达式替换。最好使用一些服务器端脚本来执行REGEX。
https://stackoverflow.com/questions/8570754
复制相似问题