From: | Pascal Polleunus <ppo(at)beeznest(dot)net> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Cc: | pativo <pativo(at)arcor(dot)de> |
Subject: | Re: String manipulation |
Date: | 2004-02-17 19:55:54 |
Message-ID: | 403271CA.7080705@beeznest.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
You should be able to do that with a regular expression.
CHECK (text ~ '^([0-9A-F]{2})+$')
Remark: As the column is NOT NULL, I suppose that an empty string is not
valid. If an empty string must be valid, replace the + with * ;-)
pativo wrote:
> Hello to all,
>
> I have small problem. I have some database fields (VARCHAR)
> and these field should hold some ahex coded values. So the
> string length must be even and each character can only be
> 0-9, a-f or A-F.
> My idea was that:
>
> ====8<-----------------------------------
>
> CREATE TABLE test (
> id INT4 PRIMARY KEY NOT NULL DEFAULT nextID(),
> text VARCHAR(150) NOT NULL CHECK(isAHex(text))
> );
>
> CREATE FUNCTION isAHex(VARCHAR) RETURNS BOOLEAN AS '
> DECLARE
> text_p ALIAS FOR $1;
> BEGIN
> IF ((length(text_p) % 2) <> 0) THEN
> RETURN FALSE;
> END IF;
> -- TODO How to check each character
> RETURN TRUE;
> END;
> ' LANGUAGE 'plpgsql';
>
> ====8<-----------------------------------
>
> Has anybody an idea how could I check each character?
> I would prefer a solution in plpgsql!!
>
> Thank!
>
>
> pativo
>
From | Date | Subject | |
---|---|---|---|
Next Message | Anton Nikiforov | 2004-02-17 19:59:00 | Select statment question |
Previous Message | Bruno Wolff III | 2004-02-17 19:32:46 | Re: String manipulation |