RE: [GENERAL] Dashed if I can work this out. Help needed copying substring to another field

From: "Jackson, DeJuan" <djackson(at)cpsgroup(dot)com>
To: robert(at)chalmers(dot)com(dot)au, psql-general <pgsql-general(at)postgreSQL(dot)org>, sql(at)chalmers(dot)com(dot)au
Cc: PGSQL SQL <pgsql-sql(at)postgreSQL(dot)org>
Subject: RE: [GENERAL] Dashed if I can work this out. Help needed copying substring to another field
Date: 1999-02-02 18:17:45
Message-ID: F10BB1FAF801D111829B0060971D839F637F94@cpsmail
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-sql

This is assuming that location and category are limited to 1-2 character
codes...
testing=> create table mytable ( location varchar(2), category
varchar(2), code varchar(9));
CREATE
testing=> insert into mytable (code) VALUES ('10CE4578P');
INSERT 228523 1
testing=> insert into mytable (code) VALUES ('9E457CT');
INSERT 228524 1
testing=> insert into mytable (code) VALUES ('10E457CT');
INSERT 228525 1
testing=> insert into mytable (code) VALUES ('9CE457CT');
INSERT 228526 1
testing=> update mytable set location=substr(code, 1, 1) WHERE code ~*
'^[0-9][^0-9]';
UPDATE 2
testing=> update mytable set location=substr(code, 1, 2) WHERE code ~*
'^[0-9][0-9][^0-9]';
UPDATE 2
testing=> update mytable set category=substr(code, 2, 1) WHERE code ~*
'^[0-9][^0-9][0-9]';
UPDATE 1
testing=> update mytable set category=substr(code, 2, 2) WHERE code ~*
'^[0-9][^0-9][^0-9][0-9]';
UPDATE 1
testing=> update mytable set category=substr(code, 3, 2) WHERE code ~*
'^[0-9][0-9][^0-9][^0-9][0-9]';
UPDATE 1
testing=> update mytable set category=substr(code, 3, 1) WHERE code ~*
'^[0-9][0-9][^0-9][0-9]';
UPDATE 1
testing=> select * from mytable;
location|category|code
--------+--------+---------
9|E |9E457CT
9|CE |9CE457CT
10|CE |10CE4578P
10|E |10E457CT
(4 rows)

If you are interfacing an app that is regex capable you could easily
extract the parts with '^([0-9]{1,2})([a-zA-Z]{1,2})(.....)$' to give
you the three parts (this is a perl/php'ism, not sure that the {}'s are
standard regex).
Hope this helps,
-DEJ

> -----Original Message-----
> Hi,
> I'm really foxed on this. In a PostgreSQL database table,
>
> I have three fields. "category","language","code"
>
> "code" is made up of category+language+code-numbers
> for example: 10CE4578P
> or
> 9E457CT
>
> So in this case, 10 is the 'category', CE is the 'language',
> and the rest makes
> up the code.
> or
> So in the 2nd case, 9 is the 'category', E is the 'language',
> and the rest
> makes up the code.
>
> I have 2758 records with the third field, 'code' filled in
> already. Thats how
> it comes. I want to extract the two first parts, and put them
> into their
> respective fields. That is, take the '10' and put it into the
> 'category' field,
> take the CE and put it into the 'language' field, and leave
> the 'code' field as
> it is.
>
> It looks like some sort of repetative statement needs to be
> written so it steps
> down the entire table, adjusting each record as it goes, but
> I'm at a loss as
> how to do it.
>
> If I could discover a way to simply extract this info from
> the 'code' field on
> the fly, with accuracy, I could probably forget the two fields of
> category,language and simpy search on the code field, but I
> can't work it out.
> Maybe I need to take a break...
>
>
> Does anyone have any ideas? I could really use some help on
> this one...
>
> Thanks
> Robert

Browse pgsql-general by date

  From Date Subject
Next Message Jackson, DeJuan 1999-02-02 18:37:43 RE: [GENERAL] Inaccessible table?? (fwd)
Previous Message astro 1999-02-02 16:56:31

Browse pgsql-sql by date

  From Date Subject
Next Message Jackson, DeJuan 1999-02-02 18:28:41 RE: [SQL] index on int2.
Previous Message Herouth Maoz 1999-02-02 15:57:08 Re: [SQL] Re: [HACKERS] Re: SELECT DISTINCT ON ... ORDER BY ...