【问题标题】:Adding values in two diff columns in ms access using sql query使用sql查询在ms访问中的两个不同列中添加值
【发布时间】:2011-07-22 22:26:35
【问题描述】:

嘿,我想知道你知道如何在查询的 SELECT 部分中使用“-”来减去。那么你也可以使用“+”来添加吗?我已经尝试过了,而不是将这些值相加,而是这样做 123+0.28=1230.28 这可能与文本格式的数字有关吗?但是从我使用“-”时开始,我从未改变过格式,而且效果很好。谢谢

我的代码:

INSERT INTO Table( Question, Calculation)

SELECT DISTINCT 'Addition' AS Question,(T2.Calculation + T1.Calculation) AS Calculation

FROM Some_Table T2, Some_Table T1

ORDER BY T2.Question;

【问题讨论】:

  • @Paul Sonier 谢谢!我还没有习惯让代码看起来不错哈哈
  • 请包含 Some_table 的表结构。但可以肯定的是,您可以加减数字。如果以这种方式开始,它将变成一个字符串。
  • @Ariel 嘿,谢谢,但问题已经解决了
  • - 仅作为数字减法有意义,因此值会转换为数字,但 + 不明确,可能是加法或串联,因此取决于值的类型.
  • 是的,但总的来说,我的经验是 + 连接运算符会将字符串强制转换为数字,因此我不希望出现这种结果。

标签: sql ms-access ms-access-2003


【解决方案1】:

它可能将 + 解释为 a 和 b 之间的字符串连接。尝试 "(a - 0) + (b - 0)" 强制解释为数字。

【讨论】:

  • 谢谢,这正是我所需要的!
  • 如果您喜欢它,请接受它作为答案。帮助人们更快地找到最佳答案。
  • 是的哈哈 jsut 必须等待几分钟才能接受答案
【解决方案2】:

如果 T2.Calculation 和 T1.Calculation 是文本数据类型,在相加之前使用 Val() 函数将它们转换为数字。

(Val(T2.Calculation) + Val(T1.Calculation)) AS Calculation

编辑: 当您对两个文本值使用减号运算符时(如在"2" - "1" 中),如果可能,Access 会将文本值转换为它们的等效数字。但是,如果任一文本值不代表有效数字,减号运算符会给您一个“类型不匹配”错误...如"2" - "hans"

加号运算符的工作方式不同 --- 对于两个文本值,它将尝试将它们连接起来,就像您使用连接运算符 (&) 而不是加法运算符 (+) ... "2" + "1"会给你“21”作为文本值而不是数字 3。所以,在这种特定情况下,"2" + "1" 等同于"2" & "1"

加法和连接运算符之间的一个重要区别是其中一个值为 Null。 "2" + Null 产生空值。但是"2" & Null 产生“2”。

【讨论】:

    【解决方案3】:

    是的,您可以使用'+' 将两个数字相加。

    SELECT table1.Field1, table1.Field2, Field1+field2 As SumOfFields
    FROM table1;
    
    Field1  Field2  SumOfFields
    1       2       3
    2       3       5
    

    编辑: 如果您有要添加在一起的字符串,那么您需要将字段转换为数字: - 因为有人指出 CLng 不会帮助 OP。它已更改为 CDbl 以允许小数。

    SELECT table1.Field1, table1.Field2, CDbl(Field1)+CDbl(field2) As SumOfFields
    FROM table1;
    

    【讨论】:

    • 我不认为 CLng 是 OP 问题的正确函数,因为 CLng("0.28") 返回 0。
    • CLng 是我使用的示例,但是可以使用几种不同的转换函数。如果你需要十进制,那么 CDbl 或 CDec。或者其他什么。
    • 嗯……是的! “或其他”还可以包括 CCur、CSng 甚至 CVar。它们都将产生一个从“0.28”开始的实数。 CLng 不会;它会产生一个整数。
    • @HansUp 既然你是一个坚持者,代码已经用 CDbl 更新以允许十进制。 :)
    • +1 我只是不明白您为什么拒绝向 OP 提供她要求的解决方案。 :-)
    【解决方案4】:

    只需在您的公式前面加上0+,它就会知道您说的是数字而不是字符串:

    0+[A]+[B]+[C]代替[A]+[B]+[C]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 2021-10-13
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多