无法将nvarchar转换为float

时间:2012-07-02 07:14:47

标签: sql sql-server tsql exception-handling casting

我有一个奇怪的问题。

在我的查询中,我选择5列,其中两列是nvarchar形式的数字(仅包含数字和精度点),其他三列是uniqueIdentifiernvarchar

我想在select语句中将这两列转换为Float但是我收到错误

  

无法将nvarchar转换为float。

我多次检查了所有这些值的格式。相信我,他们没事。

但是,当我只选择这两列并将它们转换为float时,查询会成功运行。

我感谢您对此主题的任何帮助。

我也可以在这里粘贴查询。但整个查询超过100行,写入和阅读会令人沮丧!

2 个答案:

答案 0 :(得分:3)

在回答之前肯定需要你的更多信息。你可以发布一些代码(或者你的问题的一小部分)吗?也许你的表定义也是如此?

由于所有值都是数值,为什么要将列保留为nvarchar?

最后,您的任何数据是否包含美元符号($)?

这有效:

DECLARE @Text nvarchar(100)

SET @Text = '1234.567'

SELECT CONVERT(float, @Text) AS ColumnValue

这样做:

DECLARE @Text nvarchar(100)

SET @Text = '    1234.567    '

SELECT CONVERT(float, @Text) AS ColumnValue

但这不是:

DECLARE @Text nvarchar(100)

SET @Text = '$1234.567'

SELECT CONVERT(float, @Text) AS ColumnValue

答案 1 :(得分:0)

不确定没有看到您的查询,但我认为这应该有效:

SELECT CONVERT(Float(2), LTRIM(RTRIM(<nVarchar Column>))) AS Amount FROM ......