Тип номера Oracle без точности - как узнать, целое число или нет - PullRequest
0 голосов
/ 23 января 2019

База данных нашего поставщика имеет типы номеров для всех чисел, включая целые и десятичные числа. Буквально каждый столбец числового типа создается как NUMBER без точности и масштаба.

Это большая проблема, поскольку нам нужно сопоставить эти столбцы с соответствующими типами данных в нашей целевой системе, в которую мы загружаем данные из этих таблиц.

Нам нужно знать, является ли число целым или десятичным.

Можно ли, кроме выполнения случайной выборки / профилирования данных, выбрать правильные типы данных?

UPDATE: Я принял ответ ниже и предложение от @ Bohemian. В дополнение к этому я буду использовать предложение SAMPLE, которое будет выполнять случайную выборку таблицы, поскольку мои исходные таблицы огромны (много миллиардов строк).

SELECT
    MAX(CASE WHEN col1 IS NOT NULL AND col1 <> round(col1, 0) then 1 else 0 end) as col1,
    MAX(CASE WHEN col2 IS NOT NULL AND col2 <> round(col2, 0) then 1 else 0 end) as col2
FROM TABLE
SAMPLE(0.05)

Если я хочу сэмплировать только X строк, используйте приведенную ниже формулу для ОБРАЗЦА (N):

Xrows * 100 / table_rows_total

1 Ответ

0 голосов
/ 23 января 2019

Вы можете попробовать выбрать каждое поле и посмотреть, все ли значения поля равны ROUND (FIELD, 0). Если они есть, то это поле должно быть целым числом. Если нет, десятичное число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...