Thread

  1. varchar function

    jose' soares <sferac@bo.nettuno.it> — 1999-02-17T12:00:50Z

    Hi,
    
    I'm trying to create a varchar(float8) to cast float to varchar but I
    can't create it.
    I can create bpchar(foat8) and text(float8) and it works well but
    varchar(float8).
    
    EXAPLE:
    
    create table test(f float, n name);
    CREATE
    insert into test values(1.23, current_user);
    INSERT 192042 1
    select cast(f as text) from test;
    text
    -------------------------
    2000-01-01 01:00:01.23+01   <----this is wrong then I create
    text(float8)
    (1 row)
    
    select cast(f as char) from test;
    ERROR:  No such function 'bpchar' with the specified attributes
    select cast(f as varchar) from test;
    ERROR:  No such function 'varchar' with the specified attributes
    create function text(float8) returns text as
    'begin
            return $1;
    end;' language 'plpgsql';
    CREATE
    create function bpchar(float8) returns bpchar as
    'begin
            return $1;
    end;' language 'plpgsql';
    CREATE
    create function varchar(float8) returns varchar as
    'begin
            return $1;
    end;' language 'plpgsql';
    ERROR:  parser: parse error at or near "varchar"  <---there's a parser
    error.
    select cast(f as text) from test;
    text
    ----
    1.23    <------and now it works
    (1 row)
    
    select cast(f as char) from test;
    bpchar
    ------
      1.23
    (1 row)
    
    ----I see there are some varchar built-in functions but I can't use them
    also...
    
    \df varchar
    result |function       |arguments     |description
    -------+---------------+--------------+---------------------
    bool   |varchareq      |varchar varcha|equal
    bool   |varcharge      |varchar varcha|greater-than-or-equal
    bool   |varchargt      |varchar varcha|greater-than
    bool   |varcharle      |varchar varcha|less-than-or-equal
    bool   |varcharlt      |varchar varcha|less-than
    bool   |varcharne      |varchar varcha|not equal
    int4   |varcharcmp     |varchar varcha|less-equal-greater
    int4   |varcharlen     |varchar       |character length
    int4   |varcharoctetlen|varchar       |octet length
    varchar|varchar        |name          |convert
    varchar|varchar        |varchar int4  |
    (11 rows)
    
    select varchar(n) from test;
    ERROR:  parser: parse error at or near "n"
    
    
    --Any ideas ?
    
    -Jose'-
    
    
  2. Re: [HACKERS] varchar function

    Thomas Lockhart <lockhart@alumni.caltech.edu> — 1999-02-18T03:16:57Z

    > I'm trying to create a varchar(float8) to cast float to varchar but I
    > can't create it.
    > --Any ideas ?
    
    >From the current development tree (I'm pretty sure; may not have
    committed everything yet):
    
    postgres=> select varchar('123'::float8);
    ERROR:  parser: parse error at or near "'"
    postgres=> select varchar(float8 '123');
    ERROR:  parser: parse error at or near "float8"
    postgres=> select (float8 '123')::varchar;
    ?column?
    --------
         123
    (1 row)
    
    It seems that there are some problems with calls to functions named
    varchar().
    
                             - Tom