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,State 5,Line 1 将数据类型nvarchar转换为float时出错。
这个错误......
答案 0 :(得分:0)
一行(或多行)的traceValue
字段中的数据无法转换为浮点数。
确保您使用正确的点和逗号组合来表示浮点值,并确保您在该字段中没有纯无效数据(例如文本)。
您可以尝试使用此SQL查找无效行,但可能会遇到无法处理的情况:
SELECT * FROM vwSimProjAgentTrace WHERE NOT ISNUMERIC(traceValue)
答案 1 :(得分:0)
如果您在convert command查看BoL(在线图书),您会看到nvarchar转换为float是一种隐式转换。这意味着只有" float" -able值可以转换为float。因此,可以转换每个数值(在浮点范围内)。无法转换非数字值,这非常符合逻辑。
您的列中可能有一些非数字值。在没有转换的情况下运行查询时,您可能会看到它们。寻找像逗号vs点这样的东西。在测试场景中,逗号而不是点给了我一些问题。
有关isnumeric的示例,请查看此sqlfiddle