Почему столбец идентификатора разработчика SQL возвращает мне BigDecimal вместо простого целого числа? - PullRequest
0 голосов
/ 10 июля 2019

Я использую гем сиквела для чтения таблицы базы данных сервера SQL.

Прежде чем я это сделаю, я подключаюсь к базе данных сервера SQL с помощью Oracle SQL developer, и в столбце id отображаются 1, 2, 3, 4, 5 ...

Определение таблицы выглядит так в SQL Developer: enter image description here

Но когда я использую гем сиквела для чтения таблицы в Ruby, этот столбец ID представляет собой BigDecimal и показывает что-то вроде 0.1e1. Почему это? Если это идентификатор, не всегда ли он должен быть целым числом?

Как я могу использовать это поле? Я должен вызвать to_i для преобразования его в целое число?

1 Ответ

2 голосов
/ 10 июля 2019
Значение

A NUMERIC в вашей базе данных на самом деле нецелого типа. Здесь у вас числовой масштаб 0, как в «без десятичной части», но он по-прежнему считается BigDecimal Ruby с, как и в базе данных, без десятичной части.

Если у вас целочисленный тип, например INT, вы получите целое число в Ruby, но только если. Этот столбец может быть представлен INT(10), но это не так, и пока вы не сделаете это изменение, сиквел будет уважать эту разницу.

Очень необычно иметь идентификатор типа NUMERIC. Это, вероятно, ошибка.

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