SQL hilfe: 8stellige datensätze - 5 u. 6 stelle in neue tabelle kopieren

hallo,

ich brauche hilf emit einer sql query.

und zwar hab ich eine tabelle name_id mit 8stelligen codes

1234at12
4235be65
1923ca12
etc

und würde aus dieser tabelle gerne die 5. und 6. stelle, also
in diesem fall
at
be
ca

in eine neue tabelle name_id_country kopieren.


leiderbin ich bei sql nicht und würde
mich über hilfe freuen


1000 dank!!!



test=# select regexp_replace('1234at12','[0-9]','','g');
 regexp_replace
----------------
 at
(1 row)

test=*# select substring('1234at12',5,2);
 substring
-----------
 at
(1 row)

Den Rest schaffst Du selber, oder?

Andreas

hi danke für die rasche hilfe,

es sollte automatisch funktionieren,
dh. die spalte hat ca 1000 datensätze und ich würde gerne automatisch die neue tabelle erzeugen mit den länderkürzeln, welche immer an der 4. u. 5. stelle sind in der name_id.

die datensätze in der name_id haben meistenens 8 stellen, manchmal bis zu 12

thx für die hilfe!


lg

Das geht nicht mit SQL-Mitteln.

Du könntest allerdings eine Stored Procedure schreiben, die genau das erledigt. Ist etwas aufwendiger …

Und, was ist das Problem dabei?

test=*# select * from foo;
    t
----------
 1234at12
 4235be65
 1923ca12
(3 rows)

test=*# select substring(t,5,2) from foo;
 substring
-----------
 at
 be
 ca
(3 rows)

test=*# create table neue_tabelle as select substring(t,5,2) from foo;
SELECT
test=*# select * from neue_tabelle ;
 substring
-----------
 at
 be
 ca
(3 rows)

Hint: Redundanz will man nicht. Vielleicht willst Du nur einen VIEW oder so.

Andreas

würde es mit insert gehen?
habe ich aus einem anderen forum.

INSERT INTO name_id_country (code)
SELECT SUBSTRING(s.Spalte, 5,2) FROM name_id s

thx!

ahh h ok thx
werde es später testen!

nein redundanz ist erwünscht in diesem fall auch wenn dann viele ländercodes mehrmals vorkommen!

sorry ist mein 2. tag mit sql!
danke danke danke!

ja.

Andreas