9

I currently have a Postgres 8.4 database that contains a varchar(10000) column. I'd like to change this into a varchar(255) and truncate any data that happens to be too long. How can I do this?

3 Answers 3

18

Something like ALTER TABLE t ALTER COLUMN c TYPE VARCHAR(255) USING SUBSTR(c, 1, 255)

Sign up to request clarification or add additional context in comments.

Comments

5

1) Update the column data using a substring method to truncate it

update t set col = substring(col from 1 for 255)

2) Then alter the table column

alter table t alter column col type varchar(255)

Docs here http://www.postgresql.org/docs/8.4/static/sql-altertable.html

1 Comment

it seems with more recent pgsql it would be: update t set col = substring(col from 1 for 255) ("for" replaces "to")
1
BEGIN;
UPDATE table SET column = CAST(column as varchar(255));
ALTER TABLE table ALTER COLUMN column TYPE varchar(255); --not sure on this line. my memory is a bit sketchy
COMMIT;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.