Thread: citext question

citext question

From
Heine Ferreira
Date:
Hi

I have played around a bit with the citext
extention. It looks like it is a lot like the
text data type - allmost like a memo
field. Is there any way to restrict the
length of citext fields, like char and
varchar fields?

Thanks

H.F.

Re: citext question

From
David Johnston
Date:
On Oct 13, 2012, at 17:48, Heine Ferreira <heine.ferreira@gmail.com> wrote:

> Hi
>
> I have played around a bit with the citext
> extention. It looks like it is a lot like the
> text data type - allmost like a memo
> field. Is there any way to restrict the
> length of citext fields, like char and
> varchar fields?
>
> Thanks
>
> H.F.
>

Try "citext(25)"...if it works then "yes" otherwise "no"...

David J.


Re: citext question

From
Vibhor Kumar
Date:
On Oct 13, 2012, at 6:34 PM, David Johnston <polobo@yahoo.com> wrote:

>>
>> Hi
>>
>> I have played around a bit with the citext
>> extention. It looks like it is a lot like the
>> text data type - allmost like a memo
>> field. Is there any way to restrict the
>> length of citext fields, like char and
>> varchar fields?
>>
>> Thanks
>>
>> H.F.
>>
>
> Try "citext(25)"...if it works then "yes" otherwise "no"...

No, citext(length) not supported.

However, you can define check constraint, if that fulfill your requirement as given below:
create table test2(col citext check(length(col) < 3));
Or
you can create a domain which you can use in CREATE TABLE command as given below:
CREATE domain citext_char as CITEXT CHECK(length(value) <= 3);

Thanks & Regards,
Vibhor Kumar
EnterpriseDB Corporation
The Enterprise PostgreSQL Company
Blog: http://vibhork.blogspot.com



Re: citext question

From
Craig Ringer
Date:
On 10/14/2012 05:48 AM, Heine Ferreira wrote:
> Hi
>
> I have played around a bit with the citext
> extention. It looks like it is a lot like the
> text data type - allmost like a memo
> field. Is there any way to restrict the
> length of citext fields, like char and
> varchar fields?

First, don't use "char(n)" or plain "char". Neither do what you (as a
sane and sensible person) probably expect them to do.

In PostgreSQL, "varchar(n)" is effectively the same as "text" with a
"length(col_name) <= n" CHECK constraint. There is no difference in how
they are stored, and there's no advantage to using "varchar" over "text".

It's similar with citext. While citext doesn't accept a typmod to
constrain its length, you can and should use CHECK constraints as
appropriate in your data definitions.

--
Craig Ringer