mysql - 如何在 mySQL 中限制搜索和替换字符串

标签 mysql sql

我正在使用它来搜索和替换 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/

相关文章:

MySQL 到 JSON 不一致提取

mysql - 如何使用 MySQL DECIMAL?

mysql - 压力测试后node.js mysql套接字错误

MySQL 连接/选择具有转置列的表

mysql - SQL 多连接分组

sql - azure sql数据库智能搜索算法需要建议

sql - 检测存储过程中的脏读

c# 如果有新数据插入mysql则自动添加一个新按钮

sql - 百分比行占总计,其中每行由 group by 子句确定

c# - 如何在不执行 Queryable 的情况下以通用方式替换 Queryable<T> 中的列