Если очень надо преобразовать число в строку в запросе, то можно воспользоваться таким извращенным методом.
Во временной таблице исходное число. Поля 1 - 10 это разбор по цифрам для наглядности.
"-0.5" сделано для того, чтобы при округлении цифра не увеличивалась в большую сторону по правилам округления, так как ВЫРАЗИТЬ(4,5 КАК ЧИСЛО(10,0) = 5, а ВЫРАЗИТЬ(4,5-0,5 КАК ЧИСЛО(10,0) = 4
! Главное - точно определиться с разрядностью. Если общее количество цифр будет больше 10, то надо соответственно увеличить это количество в ВЫРАЗИТЬ(...КАК ЧИСЛО(10, 0))
Так же стоит учитывать, что метод выводит лидирующие нули, т.е. если исходное число = 5 493,567, то результат будет "005493.567"
ВЫБРАТЬ
568093.567 КАК число
ПОМЕСТИТЬ втЧисло
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
//исходное число
втЧисло.число КАК Число,
//разбор по символам для наглядности
ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0)) КАК Поле1,
(ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле2,
(ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле3,
(ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле4,
(ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле5,
(ВЫРАЗИТЬ(втЧисло.число / 1 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле6,
"." КАК Поле7,
(ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 1 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле8,
(ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле9,
(ВЫРАЗИТЬ(втЧисло.число * 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 КАК Поле10,
//преобразование в строку
ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 1000000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 1000 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число / 1 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число / 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ "."
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 1 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 10 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ ПОДСТРОКА("0123456789", (ВЫРАЗИТЬ(втЧисло.число * 1000 - 0.5 КАК ЧИСЛО(10, 0))) - (ВЫРАЗИТЬ(втЧисло.число * 100 - 0.5 КАК ЧИСЛО(10, 0))) * 10 + 1, 1)
+ "" КАК ЧислоСтрокой
ИЗ
втЧисло КАК втЧисло
|