2013-12-12 2 views
0

Я не могу получить следующий запрос для работы из-за ошибок при преобразовании из nvarchar в float; Мне нужно преобразовать поле Data в float для его округления, но данные изначально представляют собой NVARCHAR (20), потому что в столбце также хранятся символьные данные. Я пробовал лить каждый из экземпляров данных, чтобы плавать, но он все еще не работал, может ли кто-нибудь сказать мне, что мне не хватает?Преобразование из nvarchar в float не работает

UPDATE tblData SET tblData.theNumericData = CASE WHEN IsNumeric([theData]) = 1 
THEN Round(Convert(float, [theData]),(Len([theData])-Charindex('.',[theData]))) 
ELSE Null END 
WHERE tblData.theFlag =1; 

Я попытался следующие два варианта ...

UPDATE tblData SET tblData.theNumericData = CASE WHEN IsNumeric([theData]) = 1 
THEN Round(Convert(float, [theData]),(Len(Convert(float, [theData]))- 
Charindex('.',Convert(float, [theData])))) 
ELSE Null END 
WHERE tblData.theFlag =1; 

и ...

UPDATE tblData SET tblData.theNumericData = CASE WHEN IsNumeric([theData]) = 1 
THEN Convert(nvarchar(20),Round(Convert(float, [theData]),(Len(Convert(float, 
[theData]))- Charindex('.',Convert(float, [theData]))))) ELSE Null END 
WHERE tblData.theFlag =1; 
+0

У вас возникли ошибки? – Robbert

+0

Да, я получаю типичную и непротиворечивую ошибку. «Ошибка преобразования типа данных nvarchar в float». – codingManiac

+0

Я предлагаю вам запустить запрос 'select thedata из tblData, где isnumeric (thedata) = 1 order by theata'. По всей вероятности, проблематичные строки будут в верхней или нижней части списка. –

ответ

0

Не могу ответить на этот вопрос, потому что мы не знаем об ошибках «Получаю, но ... вы должны переместить дело туда, где ... это сделает его более читаемым.

UPDATE tblData 
SET tblData.theNumericData = Convert(float, [theData]) 
WHERE IsNumeric([theData]) = 1 AND tblData.theFlag =1; 
Смежные вопросы