PGSQL更新表数据时将下划线替换为斜杠的实现方法咨询
问题解答
是否可以在PGSQL中实现
该需求完全可以在PostgreSQL中实现,你目前编写的SQL语句存在问题:匹配到TREE开头的字段后会直接将值设为空字符串,会丢失原数据,无法完成替换需求。
正确实现方法
PostgreSQL内置的REPLACE函数可以直接完成字符串替换操作,更新语句如下:
UPDATE tree SET value = REPLACE(value, '_', ' / ') WHERE value LIKE 'TREE%';
语句说明
WHERE value LIKE 'TREE%'子句先筛选出所有value以TREE开头的行,避免全表扫描和无关行的误修改REPLACE(value, '_', ' / ')会将每行value字段中所有的下划线_全局替换为/,完全匹配你给出的示例要求:原值
TREE_2ED替换后为TREE / 2ED,原值TREE_2ED_CIN替换后为TREE / 2ED / CIN,符合预期需求
注意事项
执行更新操作前建议先执行查询语句验证替换结果是否符合预期,避免误改数据:
SELECT value, REPLACE(value, '_', ' / ') AS new_value FROM tree WHERE value LIKE 'TREE%';
如果你的场景中仅需要替换第一个下划线,不需要替换后续的下划线,可以使用REGEXP_REPLACE函数实现:
UPDATE tree SET value = REGEXP_REPLACE(value, '_', ' / ') WHERE value LIKE 'TREE%';
内容的提问来源于stack exchange,提问作者MasterSinge
相关产品推荐
相关产品推荐

