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



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

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

Ерунда в том, что FB по факту использует количество разрядов только для определения типа, в котором хранить значение. Я ему говорю, что в числе будет до 9 цифр, а он считает, будто 10 только из-за того, что где-то там внутри само значение хранится как INTEGER. А это уже по сути раскрытие особенностей реализации, которые мне со стороны SQL знать совершенно не обязательно.
...
Рейтинг: 0 / 0
06.08.2013, 10:51:25
    #38356186
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование NUMERIC в CHAR
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
06.08.2013, 10:56:34
    #38356195
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование NUMERIC в CHAR
А конкатенация двух CHAR оказывается... Нет, не CHAR(2), а VARCHAR(2)!
Код: sql
1.
SELECT CAST('1' AS CHAR(1)) || CAST('2' AS CHAR(1)) FROM RDB$DATABASE
...
Рейтинг: 0 / 0
06.08.2013, 11:22:46
    #38356252
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование NUMERIC в CHAR
CyberMax,

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

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

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


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