Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Получить NUMERIC из его внутреннего представления хранимого в виде CHAR(n) / 5 сообщений из 5, страница 1 из 1
28.10.2008, 16:59
    #35621071
Ghola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить NUMERIC из его внутреннего представления хранимого в виде CHAR(n)
Привет!

В общем случае, требуется стандартными средствами в запросе SELECT (без пользовательских процедур и функций) вынуть NUMERIC(m,l) из его внутреннего представления хранимого в виде CHAR(n).

Например некое поле CHAR(6) в шестнадцатеричном виде выглядит как 0x0037500000F, что соответствует 3.75 типа DECIMAL(11,7). Требуется в запросе из CHAR(6) получить результат типа DECIMAL(11,7).

Возможно такое в DB2? Плиз...
...
Рейтинг: 0 / 0
30.10.2008, 13:35
    #35625424
BuryCommoner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить NUMERIC из его внутреннего представления хранимого в виде CHAR(n)
SELECT (INT(SUBSTR(name, 1, 3)) + (INT(SUBSTR(name, 4, 7)) / 10000000)) AS dec_name FROM table;
Сам, правда, не проверял.
...
Рейтинг: 0 / 0
30.10.2008, 15:05
    #35625754
Ghola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить NUMERIC из его внутреннего представления хранимого в виде CHAR(n)
Во-первых, большое спасибо за ответ!
Но, увы, предложеное Вами решение не годится.
Из описания функции INTINT or INTEGER
The INTEGER or INT function converts either a number or a valid character value into an
integer. The character input can have leading and/or trailing blanks, and a sign indictor, but it
can not contain a decimal point. Numeric decimal input works just fine.К великому сожалению, в CHAR'ах лежат отнюдь не "valid characters" - а "крякозябы". Это НЕ коды символов, а части числа NUMERIC в том виде, в котором оно хранится в памяти. Если их распечатать, то будет мусор.
...
Рейтинг: 0 / 0
30.10.2008, 16:25
    #35626017
Ghola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить NUMERIC из его внутреннего представления хранимого в виде CHAR(n)
Думаю, надо танцевать от функции HEX...
Рекомендую DB2 V9.5 SQL Cookbook (1403K)
Непонятно правда, что означает байт 0x0F в конце. Вероятно, это знак, но как его обрабатывать...
...
Рейтинг: 0 / 0
07.11.2008, 11:49
    #35639590
Ghola
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить NUMERIC из его внутреннего представления хранимого в виде CHAR(n)
В общем пока вот так сделал:
Код: plaintext
1.
2.
3.
4.
5.
SELECT ...
	CAST(DEC(HEX(SUBSTRING(BAL2,  1 , 7 )))/ 10  AS DECIMAL( 15 , 0 )) BAL00, 
	...
	CAST(DEC(HEX(SUBSTRING(RAT2,  1 , 5 )))/ 1000000  AS DECIMAL( 11 , 7 )) RAT00, 
	...
FROM XXX
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Получить NUMERIC из его внутреннего представления хранимого в виде CHAR(n) / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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