我的印象是,SQL Server将允许我执行另外如很简单列相加
SELECT val01, val02, val03 = (val01 + val02)
FROM Table_1
使val03是另外两个以前的专栏。然而,在这种情况下,我实际上看到值2旁边的值为1。你能告诉我我要去哪里错了吗?
我的印象是,SQL Server将允许我执行另外如很简单列相加
SELECT val01, val02, val03 = (val01 + val02)
FROM Table_1
使val03是另外两个以前的专栏。然而,在这种情况下,我实际上看到值2旁边的值为1。你能告诉我我要去哪里错了吗?
的+
运营商在SQL Server中两个用途:
int
,bigint
,decimal
等),它是一个加成运营商。varchar
,nvarchar
,char
等)它是一个级联运算符。如果您在字符串数据类型字段中有数字数据,您将看到第二个值附加到第一个值。
的解决方案是:
val03 = (CAST(val01 as int) + CAST(val02 as INT))
因此,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
或者,也可以修复列类型。
如果您val01和val02列字符或varchar,但包含数字,数字要在上面的语法来串联。
如果您希望它们显示为数字,则需要在val01或val02字段上使用CAST或CONVERT以将它们添加为数字值。
实施例:
SELECT val01,val02,val03 FROM TABLE_1 WHERE CAST(val03作为INT)=((CAST val01作为INT)+(CAST val02作为INT))
WWhat是val01的和val02的数据类型?我猜字符或类似? – Jacob
什么数据类型是val01和val02? – jli
辉煌!,错误的数据类型。谢谢 – giles