小学数学解决大问题!

早上刚登录上 MSN Messenger ,有人就发过来了一巨复杂的 SQL 语句,暂时将其简化为以下形式吧:

SELECT ….,Sum(A)+ Sum(B))/2, …
FROM …
GROUP BY …
HAVING …

具体的环境:ASP.NET Web 应用程序,使用 System.Data.OleDb  和 OLE DB Driver for Informix 来连接后台的 Informix 数据库,主要使用 C# 语言编写。

朋友说这个 SQL 语句在 Informix 的 DBAccess 工具(类似于 MS SQL Server 的查询分析器)中执行完全正常,但执行 Web 程序却老报 “非法的 SQL 语句” 错误,经初步检查,发现就是这个“+”有问题,即 SQL 语句中只要有加号,就报这个错误,而使用“-”(减法)就没有问题。

由于没有具体环境,不能测试到底是那个层处理 SQL 语句时出了问题,苦恼中 …

“减法没有问题”?小学数学不是学过: A + B 就等于  A -(0 – B)吗?于是我让朋友把 SQL 语句变成如下形式:

SELECT …., Sum(A)-(0 – Sum(B)))/2, …
FROM …
GROUP BY …
HAVING …

哈哈,这条语句居然就执行成功了! 咧嘴笑脸

虽然还没有最终解决问题(有时间再慢慢试),可不得不服:数学就是有用呀!

“小学数学解决大问题!”的12个回复

  1. 你这个到底是什么原因啊?

    以前碰到过在jscript中,因为jscript不是强类型的,有时候不得不需要类型转换(比如要按数字值作比较时),字符串转为数字只要num = str – 0;就可以了

  2. ‘+’代替’+’就可以了

    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpgenref/html/xsdrefsinglecharacterescape.htm

  3. 一本数学课外书有80页,明明第一天读了全书的,第二天读了
    全书的,哪一天读的 比较多?多多少页?

  4. 在等式三角形+ 正方形等于三角形+三角形正 方形,三角形代表一个数字,三角形代,表一个数字

评论已关闭。