SQL Select: nicht castbare Werte anzeigen

ich möchte einige Datentypen in einer sehr großen DB von text auf integer ändern.

da es wohl nicht direkt geht, mache ich das über einen umweg

  1. temptabelle erstellen
  2. daten casten und in temptabelle speichern
  3. temptabelle umbennnen


    das klappt ganz gut, aber sobald auch nur ein wert uncastbar ist, wird gar nichts ausgeführt. ich suche daher eine möglichkeit, mir die betreffenden spalten anzuzeigen, die sich nicht casten lassen.

das geht auch direkt.

  1. temptabelle erstellen
  2. daten casten und in temptabelle speichern
  3. temptabelle umbennnen


    das klappt ganz gut, aber sobald auch nur ein wert uncastbar ist, wird gar nichts ausgeführt. ich suche daher eine möglichkeit, mir die betreffenden spalten anzuzeigen, die sich nicht casten lassen.


test=*# create table schubidoo(t text);
CREATE TABLE
Time: 60,483 ms
test=*# copy schubidoo from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1
>> 2
>> drei
>> 4
>> \.
Time: 7977,877 ms
test=*# select * from schubidoo where t != regexp_replace(t,'[^0-9]','','g');
  t
------
 drei
(1 row)

Time: 20,801 ms
test=*# delete from schubidoo where t='drei';
DELETE 1
Time: 0,249 ms
test=*# alter table schubidoo alter column t type int using (t::int);
ALTER TABLE
Time: 57,084 ms
test=*# \d schubidoo ;
   Table "public.schubidoo"
 Column |  Type   | Modifiers
--------+---------+-----------
 t      | integer |

alles klar, vielen dank.
mein eigentliches problem, alle uncastbaren werte anzuzeigen ist nicht ganz gelöst, aber ich konnte mir mit einem eifnachen ORDER BY erst einmal behelfen