Determine length of numeric field

From: Tony Capobianco <tcapobianco(at)prospectiv(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Determine length of numeric field
Date: 2011-02-15 20:48:35
Message-ID: 1297802915.1703.13.camel@tony1.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I'm altering datatypes in several tables from numeric to integer. In
doing so, I get the following error:

dw=# \d uniq_hits
Table "support.uniq_hits"
Column | Type | Modifiers
------------+---------+-----------
sourceid | numeric |
hitdate | date |
total | numeric |
hitdate_id | integer |
Indexes:
"uniq_hits_hitdateid_idx" btree (hitdate_id), tablespace
"support_idx"
Tablespace: "support"

esave_dw=# alter table uniq_hits alter sourceid type int;
ERROR: integer out of range

Sourceid should not be more than 5 digits long. I'm able to perform
this query on Oracle and would like something similar on postgres 8.4:

delete from uniq_hits where sourceid in (select sourceid from uniq_hits
where length(sourceid) > 5);

I haven't had much luck with the length or char_length functions on
postgres.

Thanks.
Tony

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Pavel Stehule 2011-02-15 21:04:44 Re: Determine length of numeric field
Previous Message Achilleas Mantzios 2011-02-15 07:41:11 Re: SQL gotcha