Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法将nvarchar强制转换为浮动_Sql_Sql Server_Tsql_Exception Handling_Casting - Fatal编程技术网

Sql 无法将nvarchar强制转换为浮动

Sql 无法将nvarchar强制转换为浮动,sql,sql-server,tsql,exception-handling,casting,Sql,Sql Server,Tsql,Exception Handling,Casting,我有个奇怪的问题 在我的查询中,我选择了5列,其中两列是数值形式的nvarchar(仅包含数字和精度点),另外三列是uniqueIdentifier和nvarchar 我想在select语句中将这两列强制转换为Float,但出现了一个错误 无法将nvarchar强制转换为浮动 我多次检查了所有这些值的格式。相信我,他们很好 但是,当我选择这两列并将它们转换为浮动时,查询将成功运行 我非常感谢在这个问题上的任何帮助 我也可以在这里粘贴查询。但整个查询超过100行,这将是令人沮丧的写和读 在没有看到

我有个奇怪的问题

在我的查询中,我选择了5列,其中两列是数值形式的
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。