У меня есть широта, хранящаяся как числовая в таблице (пример 18.1659). Я использую оператор слияния для переноса этих данных в другую таблицу. Все работы, кроме данных, вводятся в новую таблицу только как «18». Оба поля являются числовыми, которые, как я думал, были точными в Firebird. Как я могу обойти это и ввести выбранные данные в новые поля. Вот sql, который я использовал.Получение числовой точности в заявлении о слиянии в Firebird
merge into notary n
using (select lat from Zip_codes where zipcode = n.zip) z
on (n.zip = z.zipcode)
when matched then update set lat = z.lat
Я пробовал использовать отливку как двойную точность, но это тоже не сработало. Если бы я понял, почему это произошло, я, вероятно, смогу найти решение, но я даже не знаю, почему. Благодаря
диалекте 3 ТАБЛИЦА: Нотариальные ПОЛЯ: LAT NUMERIC (18,0) СПГ NUMERIC (18,0)
ТАБЛИЦА: ZIP_CODES ПОЛЯ: LAT NUMERIC (18,5) СПГ NUMERIC (18,5)
добавьте в тему диалект SQL вашей базы данных и декларации (схемы) обеих таблиц, которые вы используете –
лично, я бы просто сохранил все широты как Int64 после их умножения на тысячи :-) –
тоже нет смысла там используя производные таблицы, которые пропускают всю идею команды MERGE. http://firebirdsql.su/doku.php?id=merge Просто пойдите с 'merge to нотариус n, используя lat z на n.zip = z.zipcode ......' –