2012-06-11 3 views
0

с помощью SQL Server 2000Как преобразовать в десятичное значение столбца

table1

id values (datatype is nvarchar) 

001 12:10 
002 01:25 
003 10:01 
004 21:20 

Я хочу, чтобы преобразовать столбец значений в поплавок ..

Пробовал Запрос

Select id, Cast(Replace(values, '':'', ''.'') as float) as values from table1 

Выход показывает, как

001 12.1 'zero is not showing 
002 01.25 
003 10.01 
004 21.2 'zero is not showing 

Почему нуль скрывается ..? 2,10 или 2,1 одинакова для поплавка типа данных, но пользователь получит запутать 2.1, как 2 часа 1 минут вместо 2 часов 10 минут ...

Как решить эту проблему

Ожидаемый выходной

id values (datatype is float) 

001 12.10 
002 01.25 
003 10.01 
004 21.20 

Нужна SQL Query Help

+1

Что такое презентация слой? –

+1

Вы делаете ошибочное предположение о числах. Номера не являются строками, «отсутствующий нуль», о котором вы говорите, не существует. То, что вы видите, представляет собой строковое представление числа. Если вы скопировали этот номер в Excel, например, изменили форматирование на '0,00', вы увидите, что хотите. Если вы использовали строку формата в C# 'toString()', то вы увидите, что хотите. Ответ заключается не в изменении вашего SQL, а в правильном форматировании строкового представления этого числа в вашем лицевом интерфейсе пользователя. – MatBailie

+0

Выберите id, Cast (Замените (значения, '': '', ''. '') Как DECIMAL (10,2)) в качестве значений из таблицы1 – Nalaka526

ответ

2

12.10 и 12.1 оба строки представлений в же поплавка (ТВЭЛ плюс плюс одна десятая). Если вы хотите, чтобы тип данных был float, вы не можете указать его строковое представление. Это можно сделать только тогда, когда преобразует плавучие строки в строку, что было бы бессмысленным упражнением в вашем случае (поскольку у вас уже есть это значение в виде строки).

Другого типа данных вместо поплавка, такие как decimal, который имеет фиксированное количество знаков после запятой, может быть более подходящим выбором для вашей задачи.

+0

'001' является столбцом id,' 12.10' является столбцом значений ... – MatBailie

+0

Тогда как я могу показать 0, какой формат мне нужно использовать ...? – JetJack

+0

001 не является столбцом идентификации ... – JetJack

0

Попробуйте

Select id, Cast(Replace(values, '':'', ''.'') as DECIMAl(10,2)) as values from table1 
Смежные вопросы