PostgreSQL:如何将字符转换为十进制?

时间:2016-03-11 02:26:43

标签: sql postgresql

我有一个char(6)数据类型的字段,值是整数的形式。 (例如33568,34048,37744)

我想要的只是将它转换为像这样的小数:

2000 = 200.00 

33568 = 335.68 

34048 = 340.48 

37744 = 377.44 

我尝试过使用 cast( "Field" as decimal(10,2)) Cast(Replace("Field",' ','.') as decimal(18,2))

但我无法达到我的预期。

PostgreSQL请。

2 个答案:

答案 0 :(得分:1)

你可以创建这个功能来促进和重构你的Requet:

CREATE OR REPLACE FUNCTION character_decimal(texttoconvert character varying,i integer) RETURNS double precision AS $$
    BEGIN
            RETURN (case when length(texttoconvert) > i then left(texttoconvert, -i) else '0' end 
                    || '.' 
                    || case when length(texttoconvert) > 0 then right(texttoconvert, i) else '0' end ) :: double precision;
    END;
$$ LANGUAGE plpgsql;

select character_decimal('2000',2);-->20.00
select character_decimal('33568',2);-->335.65
select character_decimal('34048',2);-->340.48
select character_decimal('37744',2);-->377.44

答案 1 :(得分:0)

为什么不直接在字符串中添加句点?

select left(col, -2) || '.' || right(col, 2)