Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / конвертация double в varchar / 8 сообщений из 8, страница 1 из 1
25.05.2009, 15:18
    #36005761
Ivan_kez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конвертация double в varchar
Доброго времени суток!
есть строка
Код: plaintext
UPDATE DOCUM.CONTRACT SET PRICE_A=CHAR(PRICE);
столбец PRICE типа DOUBLE
столбец PRICE_A типа VARCHAR
необходимо произвести UPDATE.
при вот такой CHAR(PRICE) записи в PRICE_A возвращается неправильно сконвертированное значение(там где должно быть 457314.40625 стоит 4.5731440625E5). что посоветуете?
...
Рейтинг: 0 / 0
25.05.2009, 18:28
    #36006354
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конвертация double в varchar
Здравствуйте.

В v9.5 можно CHAR(DECFLOAT(PRICE)), иначе можно написать c-udf из 1 строки или как-то вырезать лидирующие нули от CHAR(DEC(PRICE, M, N)).
...
Рейтинг: 0 / 0
26.05.2009, 09:13
    #36006986
Ivan_kez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конвертация double в varchar
Mark Barinstein,

сервер 9.1 так что с DECFLOAT() не получится.
расскажите пожалуйста про
авторвырезать лидирующие нули от CHAR(DEC(PRICE, M, N))
как в моем случае применить?
...
Рейтинг: 0 / 0
26.05.2009, 09:27
    #36007012
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конвертация double в varchar
Код: plaintext
REPLACE( ...REPLACE( ' '||CHAR(DEC(PRICE, M, N)),' 0',' '),...' 0',' ')
вот так например M-N-1 вложенный REPLACE.
После преобразования добавляешь в переди пробел и пару пробел + "0" заменяешь на пробел или два пробела.
...
Рейтинг: 0 / 0
26.05.2009, 10:08
    #36007113
Ivan_kez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конвертация double в varchar
Не очень понятно.
Не уж то нет по проще метода?
...
Рейтинг: 0 / 0
26.05.2009, 10:17
    #36007133
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конвертация double в varchar
Ivan_kezрасскажите пожалуйста про
авторвырезать лидирующие нули от CHAR(DEC(PRICE, M, N))
как в моем случае применить?Ну, как-то так:
Код: plaintext
translate(trim(translate(char(dec(PRICE,  31 ,  5 )), ' ', '0')), '0', ' ')
...
Рейтинг: 0 / 0
26.05.2009, 11:15
    #36007365
конвертация double в varchar
Ivan_kez,

Ну вот еще вариант, правда не особо проще.
Код: plaintext
STRIP(STRIP(RTRIM(CHAR(DECIMAL(PRICE, 31 , 15 ),'.')),B,'0'),T,'.')
DECIMAL(X,31,15). Преобразование в тип DECIMAL. 31 - макс.значение. 15 - кол-во знаков после точки.
CHAR(X,'.') - преобразование в символьную строку. Разделитель целой/дробной - точка
RTRIM(X) - отрезаем пробел(ы) в конце строки (они будут после работы CHAR)
STRIP(X,B,'0') - отрезаем символы '0' с обоих сторон строки.
STRIP(X,T,'.') - отрезаем символ '.' с конца строки( это нужно, если дробная часть нулевая)

Это выражение будет работать только для неотрицательных чисел.

Можно создать функцию для этой цели на основе приведенного выражения.
...
Рейтинг: 0 / 0
26.05.2009, 11:29
    #36007400
Ivan_kez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конвертация double в varchar
большое спасибо!
последний вариант больше всего подошел.
т.к. это одноразовая операция, то в функцию выносить мне не имеет смысла.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / конвертация double в varchar / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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