我用这个来搜索和替换mysql中的字符串:

UPDATE products
   SET prodname = REPLACE(prodname, " S", "'S")

产品包含字符串,如“泰诺标签100秒”,我想转换为“泰诺标签100秒”。
但是,使用上面的sql语句也会影响字符串,比如“nike shoes”,它将变成“nike'shoes”,这显然是我不喜欢的。
有没有方法可以限制replace函数(或者有其他方法可以这样做)以便得到我想要的结果?对于我的大多数数据,“s”通常位于字符串的末尾,我希望这会有帮助。

最佳答案

通过将where子句与regexp()放在一起,可以将其限制为更接近您需要的子集:

UPDATE products SET prodname = REPLACE(prodname, " S", "'S") WHERE prodname REGEXP '[0-9]\sS'

这与产品名称中包含数字、空格和s的行相匹配。遗憾的是,MySQL中默认情况下没有实现regex replace,因此只能替换匹配的行,所以这也将“tylenol tab solo 100 s”替换为“tylenol tab solo 100 s”,但不会放在你原来的“泰诺标签100秒”

10-04 21:35