【发布时间】:2012-07-02 14:30:45
【问题描述】:
我有一个奇怪的问题。
在我的查询中,我选择了 5 列,其中两列是数字形式的 nvarchar(仅包含数字和精度点),另外三列是 uniqueIdentifier 和 nvarchar。
我想在我的 select 语句中将这两列强制转换为 Float,但出现错误
无法将 nvarchar 转换为浮点数。
我多次检查所有这些值的格式。相信我,他们很好。
但是当我只选择这两列并将它们转换为浮动时,查询运行成功。
感谢您对此主题的任何帮助。
我也可以在这里粘贴查询。但是整个查询超过 100 行,这将是令人沮丧的写作和阅读!
【问题讨论】:
-
因此,与其发布 100 行查询,不如尝试将查询的大小减小到可以管理的程度,但 仍然存在问题。通常,在尝试执行此操作的过程中,您会获得对潜在问题的新见解 - 但就目前的问题而言,我怀疑我们能否为您提供帮助。
-
相信我,优化器不会对你有仇。您的调试一定是意外地“证明”了某些东西是好的,而事实并非如此。你试过
select cast(x as float) from yourTable吗?如果任一列都失败,您知道至少有一个值与该强制转换不兼容。然后尝试select top 100 x from yourTable order by x asc然后desc;通常问题值处于极端。 -
我试过这个。 “从 yourTable 中选择 cast(x as float)”效果很好。当我选择这些列旁边的其他列时,问题就出现了。
-
使用 CAST 函数向我们展示几行查询。
-
@AshkanAleAli,您可能怀疑转换错误的列有误。
标签: sql sql-server tsql exception-handling casting