非常简单的列添加

时间:2011-08-22 12:45:42

标签: sql-server tsql sql-server-2008

我的印象是SQL Server允许我执行添加,例如

SELECT     val01, val02, val03 = (val01 + val02)
FROM       Table_1

这样val03就是前两列的加法。然而,在这种情况下,我确实看到价值2旁边的价值1.你能告诉我我哪里出错吗?

3 个答案:

答案 0 :(得分:3)

+运算符在SQL Server中有两种用途:

  • 对于数字intbigintdecimal等),它是 ADDITION 运算符。
  • 对于字符串varcharnvarcharchar等),它是 CONCATENATION 运算符。

如果在字符串数据类型字段中有数字数据,则会看到第二个值附加到第一个值。

解决方案是:

  • 使用正确的数据类型。如果是数字,则数据类型应为数字。
  • CAST为正确的数据类型 - 即val03 = (CAST(val01 as int) + CAST(val02 as INT))

答案 1 :(得分:1)

那么val03是结果列表中val01和val02的串联?像:

VAL01  VAL02  VAL03
    1      2   1  2
    4      5   4  5

在这种情况下,Val01或Val02都是非数字列,或者两者都是。施展他们:

SELECT val01, val02, val03 = (cast(val01 as float) + cast(val02 as float)) FROM Table_1

或者,或者,修复列类型。

答案 2 :(得分:0)

如果您的val01和val02列是字符或varchar,但包含数字,则数字将在上面的语法中连接。

如果您希望它们显示为数字,则需要在val01或val02字段上使用CAST或CONVERT,以将它们作为数值添加。

示例:

SELECT val01,val02,val03 FROM Table_1 WHERE CAST(val03 as INT)=((CAST val01 as INT)+(CAST val02 as INT))

相关问题