SQL-Query: erstes Zeichen eines Strings in Tabellenfeld ändern falls Buchstabe

Hallo,

ich habe eine Tabelle mit einer Spalte, die Strings (PostgreSQL Typ character varying) enthält. Diese Strings muss ich mit einem Query so ändern, dass der erste Character entfernt wird. Die Tabellenspalte sieht z.B. so aus:

A123
A6435
A345
B123
B33233
B321

Und nach dem Query sollte sie folgendermaßen aussehen:

123
6435
345
123
33233
321

Der Datentyp soll nicht geändert werden (ich möchte also nicht, dass das danach Daten vom Typ Integer sind, das ist nicht nötig).

Ich habe auch schonmal Google bemüht und dabei das hier gefunden. Nach etwas Recherche für postgresql sieht mein Query jetzt also von der Shell aus so aus:

psql -U <user> -d <database> -c "UPDATE <table> SET <field> = substr(<field>, 2, char_length(<field>));"

Noch schöner wäre es, wenn der erste Character nur dann entfernt würde, wenn er auch ein Buchstabe (a-zA-Z) ist – so dass bei versehentlich doppelter Anwendung nicht aus dem Eintrag 123 der Eintrag 23 wird, denn das wäre fatal.

Wir muss ich meinen Query verändern, um das zu erreichen?

Vielen Dank im Voraus,



test=*# select * from spirit ;
  t
------
 A123
 B234
 0123
 AAA1
(4 rows)

test=*# update spirit set t = regexp_replace(t,'^[a-zA-Z]','') ;
UPDATE 4
test=*# select * from spirit ;
  t
------
 123
 234
 0123
 AA1
(4 rows)

test=*# update spirit set t = regexp_replace(t,'^[a-zA-Z]','') ;
UPDATE 4
test=*# select * from spirit ;
  t
------
 123
 234
 0123
 A1
(4 rows)

test=*# update spirit set t = regexp_replace(t,'^[a-zA-Z]','') ;
UPDATE 4
test=*# select * from spirit ;
  t
------
 123
 234
 0123
 1
(4 rows)

Andreas

Wow, genau das, was ich gesucht habe. Vielen, vielen Dank!