我的印象是SQL Server允许我执行添加,例如
SELECT val01, val02, val03 = (val01 + val02)
FROM Table_1
这样val03就是前两列的加法。然而,在这种情况下,我确实看到价值2旁边的价值1.你能告诉我我哪里出错吗?
答案 0 :(得分:3)
+
运算符在SQL Server中有两种用途:
int
,bigint
,decimal
等),它是 ADDITION 运算符。varchar
,nvarchar
,char
等),它是 CONCATENATION 运算符。如果在字符串数据类型字段中有数字数据,则会看到第二个值附加到第一个值。
解决方案是:
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))