PostgreSQL中如何对整列所有行应用TRANSLATE函数移除字符串中的点
正确实现方案
你之前报错是因为语法错误:TRANSLATE 函数的第一个参数直接传入要处理的列名即可,不需要嵌套子查询,系统会自动逐行处理该列的所有值。
1. 基于TRANSLATE的正确写法
-- 仅清理字符 SELECT translate(num_column, '.', '') AS cleaned_num FROM my_table; -- 如果需要转为数值类型方便后续计算,可加类型转换 SELECT translate(num_column, '.', '')::BIGINT AS cleaned_num FROM my_table;
2. 更适配的替代方案:REPLACE函数
你当前的需求只是把固定的.字符替换为空,用REPLACE函数语义更贴合,代码可读性更高:
SELECT REPLACE(num_column, '.', '')::BIGINT AS cleaned_num FROM my_table;
额外说明
如果后续需要更新表中存储的原始值,也可以直接用UPDATE语句批量处理:
UPDATE my_table SET num_column = REPLACE(num_column, '.', '');
内容的提问来源于stack exchange,提问作者Amin Kiany
相关产品推荐
相关产品推荐

