powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование NUMERIC в CHAR
13 сообщений из 13, страница 1 из 1
Преобразование NUMERIC в CHAR
    #38356134
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос:
Код: sql
1.
SELECT CAST(1 AS NUMERIC(9,0)) || '!' AS NUM FROM RDB$DATABASE



FB считает, что тип поля NUM - VARCHAR(12). По моим расчетам: 9 цифр + возможный минус ("-") + '!' дают 11 символов. Что я не учел?
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356139
Dmitry Kurbsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
numeric(9) в глубине души integer.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356161
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, получается, что это повторение чем Numeric(1,1) отличается от Numeric(2,1) . Объясните только, такое поведение по стандарту или FB-специфичное? А то ерунда же получается.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356169
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

где ерунда?
2147483647 - 10 цифр. плюс знак. плюс '!' - 12 символов.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356176
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Ерунда в том, что FB по факту использует количество разрядов только для определения типа, в котором хранить значение. Я ему говорю, что в числе будет до 9 цифр, а он считает, будто 10 только из-за того, что где-то там внутри само значение хранится как INTEGER. А это уже по сути раскрытие особенностей реализации, которые мне со стороны SQL знать совершенно не обязательно.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356186
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

А вот еще фишка, только с SUBSTRING:
Код: sql
1.
SELECT SUBSTRING(CAST(20130600 AS CHAR(8)) FROM 3 FOR 2) FROM RDB$DATABASE

дает тип VARCHAR(8).
Код: sql
1.
SELECT SUBSTRING(201306 FROM 3 FOR 2) FROM RDB$DATABASE

дает тип VARCHAR(11).

В расчете типа поля не учитывается, что SUBSTRING возвратит от 0 до 2 символов, сколько бы их не было в исходной строке.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356195
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А конкатенация двух CHAR оказывается... Нет, не CHAR(2), а VARCHAR(2)!
Код: sql
1.
SELECT CAST('1' AS CHAR(1)) || CAST('2' AS CHAR(1)) FROM RDB$DATABASE
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356252
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

результат конкатенации в FB varchar.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356286
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предпочитаю кастовать явно, так оно спокойней.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356378
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyпредпочитаю кастовать явно, так оно спокойней.
Предпочитаю вообще типы данных на сервере не преобразовывать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38356405
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПредпочитаю вообще типы данных на сервере не преобразовывать.Иногда это меньшее из зол, вот такие места флажками каст-ами и огораживаю.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38371856
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

имеет ли смысл создавать тикеты на тему SUBSTRING и конкатенации CHAR? Про работу с NUMERIC уже молчу - видимо, тут никто не будет править его поведение.
...
Рейтинг: 0 / 0
Преобразование NUMERIC в CHAR
    #38371941
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

не вижу в этом практического смысла
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преобразование NUMERIC в CHAR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]