comment puis-je filtrer les valeurs non numériques dans un champ de texte dans teradata?

oI ont un teradata table avec environ 10 millions de données, qui stocke un identifiant numérique champ de type varchar. j'ai besoin de transférer les valeurs dans ce champ d'une colonne bigint dans une autre table, mais je ne peux pas simplement dire cast(id_field comme bigint) parce que j'ai un caractère non valide erreur. en regardant à travers les valeurs, je trouve qu'il pourrait être un personnage à n'importe quelle position dans la chaîne, donc, disons que la chaîne est de type varchar(18) j'ai pu filtrer lignes invalides de la sorte :

     where substr(id_field,1,1) not in (/*big,ugly array of non-numeric chars*/)
     and substr(id_field,2,1) not in (/*big,ugly array of non-numeric chars*/)

etc, etc... 

puis le casting, mais ce n'est pas réalisable dans le long terme. c'est lent et si la chaîne a 18 caractères possibles, il rend la requête illisible. comment puis-je filtrer les lignes qui ont une valeur dans ce champ qui ne sera pas jeté comme un bigint sans vérifier chaque personnage individuellement pour un tableau de caractères non numériques?

exemple de valeurs de

   123abc464
   a2.3v65
   a_356087
   ........
   000000000
   BOB KNIGHT
   1235468099

les valeurs de suivre les pas de modèles spécifiques, j'ai tout simplement besoin de filtrer ceux qui contiennent des données non numériques.
123456789 est correct mais 123.abc_c3865 n'est pas...

Veuillez donner quelques exemples. Voulez-vous dire que vous avez des données de cette façon? 123abc456 Alors appelez-vous identifiant numérique de terrain?

OriginalL'auteur Chris Drappier | 2010-08-24