我的印象是,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