Sql 无法将nvarchar强制转换为浮动
我有个奇怪的问题 在我的查询中,我选择了5列,其中两列是数值形式的Sql 无法将nvarchar强制转换为浮动,sql,sql-server,tsql,exception-handling,casting,Sql,Sql Server,Tsql,Exception Handling,Casting,我有个奇怪的问题 在我的查询中,我选择了5列,其中两列是数值形式的nvarchar(仅包含数字和精度点),另外三列是uniqueIdentifier和nvarchar 我想在select语句中将这两列强制转换为Float,但出现了一个错误 无法将nvarchar强制转换为浮动 我多次检查了所有这些值的格式。相信我,他们很好 但是,当我选择这两列并将它们转换为浮动时,查询将成功运行 我非常感谢在这个问题上的任何帮助 我也可以在这里粘贴查询。但整个查询超过100行,这将是令人沮丧的写和读 在没有看到
nvarchar
(仅包含数字和精度点),另外三列是uniqueIdentifier
和nvarchar
我想在select语句中将这两列强制转换为Float
,但出现了一个错误
无法将nvarchar强制转换为浮动
我多次检查了所有这些值的格式。相信我,他们很好
但是,当我选择这两列并将它们转换为浮动时,查询将成功运行
我非常感谢在这个问题上的任何帮助
我也可以在这里粘贴查询。但整个查询超过100行,这将是令人沮丧的写和读 在没有看到您的查询的情况下不确定,但我认为这应该是可行的:
SELECT CONVERT(Float(2), LTRIM(RTRIM(<nVarchar Column>))) AS Amount FROM ......
选择CONVERT(Float(2),LTRIM(RTRIM())作为。。。。。。
在回答之前,您肯定需要更多信息。你能发布一些你的代码(或你的问题的小复制品)吗?也许您的表定义也是如此
既然所有的值都是数字,为什么要将列保留为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
因此,与其发布一个100行的查询,不如尝试将查询的大小减小到可管理的程度,但这仍然会暴露问题。通常,在尝试这样做的过程中,你会对根本问题有新的见解——但就目前的问题而言,我怀疑我们能帮到你。相信我,乐观主义者不会与你有仇视。您的调试一定意外地“证明”了某些东西是好的,而事实并非如此。您是否尝试过从表中选择强制转换(x为浮点值)?如果这两个列都失败了,您知道至少有一个值与该转换不兼容。然后尝试按x asc从您的表顺序中选择前100个x,然后按
desc
;通常问题的价值观是极端的。我已经试过了。“从表中选择强制转换(x为浮动)”效果很好。当我在这些列旁边选择其他列时,问题就出现了。请向我们展示使用该转换函数查询的几行。@AshkanAleAli,您可能怀疑转换错误的列是错误的。不知道OP为什么将amount保留为nvarchar。