我正在使用它来搜索和替换 mySQL 中的字符串:
UPDATE products
SET prodname = REPLACE(prodname, " S", "'S")
产品包含诸如“TYLENOL TABS 100 S”之类的字符串,我想将其转换为“TYLENOL TABS 100'S”。
但是,使用上面的SQL语句也会影响字符串,比如“NIKE SHOES”,它会变成“NIKE'SHOES”——我显然不喜欢。
有没有一种方法可以限制替换功能(或者有其他方法可以做到这一点),以便获得我想要的结果?对于我的大部分数据,“S”通常位于字符串的末尾,我希望这会有所帮助。
最佳答案
您可以通过在 REGEXP() 中放置 WHERE 子句来将其限制为更接近您需求的子集:
UPDATE products SET prodname = REPLACE(prodname, " S", "'S") WHERE prodname REGEXP '[0-9]\sS'
这匹配产品名称中有数字、后跟空格、后跟 S 的行。遗憾的是,MySQL 中没有默认实现的 REGEX 替换,只能替换那个匹配项,所以这也将将“TYLENOL TAB SOLO 100 S”替换为“TYLENOL TAB'SOLO 100'S”,但不会替换您原来的“TYLENOL TABS 100 S”
关于mysql - 如何在 mySQL 中限制搜索和替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6093813/