| From: | Richard Huxton <dev(at)archonet(dot)com> |
|---|---|
| To: | blackwater dev <blackwaterdev(at)gmail(dot)com> |
| Cc: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: can't cast char to in |
| Date: | 2008-04-22 17:09:03 |
| Message-ID: | 480E1BAF.40108@archonet.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
blackwater dev wrote:
> I have a table with a mileage column that is a character varying (please
> don't ask why :).
Why? :-)
> I need to do a query where mileage > 500
>
> select * from cars where mileage>500
>
> So I need to cast it but everything I try throws an error such as :
>
> ERROR: invalid input syntax for integer: "+"
Once you've cleaned your data, I would do one of two things:
1. Add a constraint to restrict the values the mileage column will accept:
ALTER TABLE cars ADD CONSTRAINT valid_mileage
CHECK (mileage ~ '^[+]?[0-9]+$');
2. You can alter the type on-the-fly too:
ALTER TABLE mileage_test ALTER COLUMN mileage TYPE integer
USING (mileage::int);
Note that you'll need to remove the constraint from #1 if you've applied
that.
--
Richard Huxton
Archonet Ltd
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Mary Ellen Fitzpatrick | 2008-04-22 17:13:45 | Can not restart postgres: Panic could not locate a valid checkpoint record |
| Previous Message | Vanole, Mike | 2008-04-22 17:04:27 | Best approach for large table maintenance |