o У меня есть таблица teradata с около 10 миллионами записей, в которой поле числового идентификатора хранится как varchar.мне нужно перенести значения в этом поле в столбец bigint в другой таблице, но я не могу просто сказать cast (id_field как bigint), потому что я получаю ошибку недопустимого символа.Просматривая значения, я обнаружил, что в любой позиции строки может быть символ, поэтому предположим, что строка varchar (18). Я могу отфильтровать недопустимые строки следующим образом:
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...
, затемлитье будет работать, но в долгосрочной перспективе это невозможно.он медленный, и если строка содержит 18 возможных символов, запрос становится нечитаемым.Как я могу отфильтровать строки, которые имеют значение в этом поле, которое не будет приведено как bigint без проверки каждого символа в отдельности для массива нечисловых символов?
примерные значения будут
123abc464
a2.3v65
a_356087
........
000000000
BOB KNIGHT
1235468099
значения не следуют конкретным шаблонам, мне просто нужно отфильтровать те, которые содержат ЛЮБЫЕ нечисловые данные.123456789 это хорошо, но 123.abc_c3865 не ...