Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 06 как 6  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
Здравствуйте!

В табличке строковый тип столбца. Кое-как получаю с него числа и вывожу НО
Число '06' возвращает 6 а мне очень хочется увидеть 0.6

Вот код преобразования строки в число:

cast(substring([4], 1, case when PATINDEX('%[^0-9]%', [4]) = 0 then LEN([4]) else PATINDEX('%[^0-9]%', [4]) - 1 end) as float) as Number 
20 мар 14, 09:23    [15756963]     Ответить | Цитировать Сообщить модератору
 Re: 06 как 6  [new]
ROLpogo
Member

Откуда: Реутов
Сообщений: 219
declare @v varchar(20) = '06r45'

select case when substring(@v, 1, 1) = '0'
            then cast(substring(@v, 1, case when PATINDEX('%[^0-9]%', @v) = 0
                                            then LEN(@v)
                                            else PATINDEX('%[^0-9]%', @v) - 1
                                            end) as float) /
                 power(10, DATALENGTH(cast(substring(@v, 1, case when PATINDEX('%[^0-9]%', @v) = 0
                                                                 then LEN(@v)
                                                                 else PATINDEX('%[^0-9]%', @v) - 1
                                                                 end) as varchar(20))) - 1)
            else cast(substring(@v, 1, case when PATINDEX('%[^0-9]%', @v) = 0
                                            then LEN(@v)
                                            else PATINDEX('%[^0-9]%', @v) - 1
                                            end) as float)
            end as Number
20 мар 14, 09:54    [15757128]     Ответить | Цитировать Сообщить модератору
 Re: 06 как 6  [new]
sanekoffice
Member

Откуда:
Сообщений: 371
Отлично. Спасибо!
20 мар 14, 09:58    [15757156]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить