2013-06-03 1 views
1
SELECT logicalTime, traceValue, unitType, entName 
FROM vwSimProjAgentTrace 
WHERE valueType = 10 
AND agentName ='AtisMesafesi' 
AND (entName = 'Hawk-1') 
AND simName IN ('TipSenaryo1_0') 
AND logicalTime IN (
    SELECT logicalTime 
    FROM vwSimProjAgentTrace 
    WHERE valueType = 10 AND agentName ='AtisIrtifasi' 
    AND (entName = 'Hawk-1') 
    AND simName IN ('TipSenaryo1_0') 
    AND CONVERT(FLOAT , traceValue) > 123 
) ORDER BY simName, logicalTime 

Это моя команда SQL и это таблица вид ... каждый раз я поставил «конвертировать (поплавок ...) часть» я получаю Msg 8114, Level 16, Состояние 5, строка 1 Ошибка преобразования типа данных nvarchar в float.SQL ошибка преобразования на просмотр таблиц

эта ошибка ...

+0

пожалуйста, укажите, какую базу данных вы используете. – ankurtr

+0

Похож на SQL Server. – Jacob

+0

ВЫБОР logicalTime ОТ vwSimProjAgentTrace ГДЕ ValueType = 10 И AgentName = 'AtisIrtifasi' И entName = 'Hawk-1' И simName = 'TipSenaryo1_0' и CONVERT (ПОПЛАВКОВЫЕ, traceValue)> 123 Это внутренний выберите часть и она дает ту же ошибку ... iam using MSSQL 2005 – drgeek

ответ

0

один (или более) из строк имеют данные в traceValue поле, которое не может быть преобразовано в поплавок.

Убедитесь, что вы использовали правильную комбинацию точек и запятых, чтобы сигнализировать значения с плавающей запятой, а также убедитесь, что в этом поле нет недействительных данных (например, текст).

Вы можете попробовать это SQL, чтобы найти недействительные строки, но могут быть случаи, он не будет обрабатывать:

SELECT * FROM vwSimProjAgentTrace WHERE NOT ISNUMERIC(traceValue) 

Вы можете найти documentation of ISNUMERIC here.

+0

Я проверил isnumeric для float, и нет никаких нечетных данных ... Я уверен, что .. и я упростил querry, но все та же ошибка: выберите логическое время из viewTable, где convert (float, traceValue)> 123 работает очень, но всякий раз i put и simName = '' и entName = '' для конвертирования. я действительно не понял? это из-за использования таблицы таблиц? потому что с тех пор я использовал внутренние соединения, и они отлично работали, но мои друзья меняли их и теперь создавали эти окна просмотра - конвертировать сбой – drgeek

0

Если вы посмотрите в BoL (книги онлайн) на convert command, вы увидите, что преобразование nvarchar в float является неявным преобразованием. Это означает, что только «плавающие» значения могут быть преобразованы в float. Таким образом, каждое числовое значение (то есть внутри диапазона с плавающей точкой) может быть преобразовано. Нечисловое значение не может быть преобразовано, что вполне логично.

Возможно, у вас есть несколько числовых значений в столбце. Вы можете увидеть их, когда будете запускать запрос без конвертации. Найдите что-то вроде запятой и точкой. В тестовом сценарии запятая вместо точки дала мне некоторые проблемы.

Для примера IsNumeric, посмотрите на эту sqlfiddle

Смежные вопросы