Thread: Cast

Cast

From
Eduardo Vázquez Rodríguez
Date:
I made I mistake choosing the data types in my database I try to run  a
query that look like this
Duration data type is varchar

SELECT name, SUM(duration) AS total
FROM table
GROUP BY name
HAVING  name != 'John'

I get the following error:
ERROR:  function sum(character varying) does not exist
HINT:  No function matches the given name and argument types. You may
need to add explicit type casts.

1. How can I made a cast on the query from varchar to int?

2. If I change the datatype on the database from varchar to int, do I
loose all the data on that field?

Thanks in advanced

Re: Cast

From
Gaetano Mendola
Date:
Eduardo Vázquez Rodríguez wrote:

> I made I mistake choosing the data types in my database I try to run  a
> query that look like this
> Duration data type is varchar
>
> SELECT name, SUM(duration) AS total
> FROM table
> GROUP BY name
> HAVING  name != 'John'
>
> I get the following error:
> ERROR:  function sum(character varying) does not exist
> HINT:  No function matches the given name and argument types. You may
> need to add explicit type casts.
>
> 1. How can I made a cast on the query from varchar to int?

Try with:

... SUM(duration::integer) ...


> 2. If I change the datatype on the database from varchar to int, do I
> loose all the data on that field?

You can create a new integer column, copy all datas from the old
VARCHAR column to the new one and with a rename column and a remove column
you finish...


Regards
Gaetano Mendola