Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 查询运行时错误。无法对非数字类型应用二进制数字运算符[*|/]_Sql_Coldfusion_Coldfusion 9_Qoq - Fatal编程技术网

Sql 查询运行时错误。无法对非数字类型应用二进制数字运算符[*|/]

Sql 查询运行时错误。无法对非数字类型应用二进制数字运算符[*|/],sql,coldfusion,coldfusion-9,qoq,Sql,Coldfusion,Coldfusion 9,Qoq,我有一个脚本,查询数据库中的订单信息,然后查询该查询以获得订单总数。代码如下所示 <!--- Retrieve order information from database ---> <CFQUERY NAME="GetOrder"> SELECT oi.OrderQty, oi.ItemPrice FROM Orders o, OrderItems oi, WHERE o.ID = <cfqueryparam

我有一个脚本,查询数据库中的订单信息,然后查询该查询以获得订单总数。代码如下所示

<!--- Retrieve order information from database --->
<CFQUERY  NAME="GetOrder">
  SELECT 
    oi.OrderQty, oi.ItemPrice
  FROM 
    Orders o,
    OrderItems oi, 
  WHERE 
    o.ID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#ATTRIBUTES.OrderID#">
    AND o.ID   = oi.OrderID
</CFQUERY>

<!--- Query the GetOrders query to find total $$ --->
<CFQUERY DBTYPE="Query" NAME="GetTotal">
  SELECT SUM(ItemPrice * OrderQty) AS OrderTotal
  FROM GetOrder
</CFQUERY>
<cfoutput>
<cfif isnumeric(GetOrder.OrderQty)>1<cfelse>0</cfif>
<cfif isnumeric(GetOrder.ItemPrice)>1<cfelse>0</cfif>
<cfabort>
</cfoutput>

挑选
oi.OrderQty,oi.ItemPrice
从…起
命令:,
订单项目oi,
哪里
o、 ID=
和o.ID=oi.OrderID
选择总和(ItemPrice*OrderQty)作为OrderTotal
从GetOrder
数据库中的itemPrice和OrderQty字段都设置为数字数据类型。由于某种原因,当我运行脚本时,我得到了错误,“查询运行时错误。无法对非数字类型应用二进制数字运算符[*|/]”

我甚至运行了一个快速检查,查看查询中的数字是否为数字,并在查询之前中止了脚本。我开的支票是这样的

<!--- Retrieve order information from database --->
<CFQUERY  NAME="GetOrder">
  SELECT 
    oi.OrderQty, oi.ItemPrice
  FROM 
    Orders o,
    OrderItems oi, 
  WHERE 
    o.ID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#ATTRIBUTES.OrderID#">
    AND o.ID   = oi.OrderID
</CFQUERY>

<!--- Query the GetOrders query to find total $$ --->
<CFQUERY DBTYPE="Query" NAME="GetTotal">
  SELECT SUM(ItemPrice * OrderQty) AS OrderTotal
  FROM GetOrder
</CFQUERY>
<cfoutput>
<cfif isnumeric(GetOrder.OrderQty)>1<cfelse>0</cfif>
<cfif isnumeric(GetOrder.ItemPrice)>1<cfelse>0</cfif>
<cfabort>
</cfoutput>

10
10
cfifs的两项结果均为“1”


在此方面的任何帮助都将不胜感激

忘记查询,并循环查询以执行相同的操作,最好使用
precisionEvaluate()
避免浮点舍入错误

<cfset orderTotal = 0>
<cfloop query="GetOrder">
    <cfset orderTotal = precisionEvaluate(orderTotal + (ItemPrice * OrderQty))>
</cfloop>

它不起作用的原因可能有很多。可能您的DB驱动程序没有返回正确的sql类型


isnumeric
代码仅测试字符串是否为数字,而不是该字符串在查询对象中的内部表示形式。

测试仅测试查询中的第一行,后续行可能会导致问题。