我用这个来搜索和替换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秒”