1

我有一个奇怪的问题。

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

Float我想在我的选择语句中将这两列强制转换,但出现错误

无法将 nvarchar 转换为浮动。

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

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

我感谢任何关于这个主题的帮助。

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

4

2 回答 2

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
于 2012-07-02T14:29:13.830 回答
0

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

SELECT CONVERT(Float(2), LTRIM(RTRIM(<nVarchar Column>))) AS Amount FROM ......
于 2012-07-02T08:03:05.527 回答