2011-08-22 31 views
0

我的印象是,SQL Server將允許我執行另外如很簡單列相加

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

使val03是另外兩個以前的專欄。然而,在這種情況下,我實際上看到值2旁邊的值爲1。你能告訴我我要去哪裏錯了嗎?

+1

WWhat是val01的和val02的數據類型?我猜字符或類似? – Jacob

+1

什麼數據類型是val01和val02? – jli

+0

輝煌!,錯誤的數據類型。謝謝 – giles

回答

3

+運營商在SQL Server中兩個用途:

  • 對於intbigintdecimal等),它是一個加成運營商。
  • 對於varcharnvarcharchar等)它是一個級聯運算符。

如果您在字符串數據類型字段中有數字數據,您將看到第二個值附加到第一個值。

的解決方案是:

  • 使用正確的數據類型。如果它是一個數字,數據類型應該是數字的。
  • 轉換爲正確的數據類型 - 即val03 = (CAST(val01 as int) + CAST(val02 as INT))
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 

或者,也可以修復列類型。

0

如果您val01和val02列字符或varchar,但包含數字,數字要在上面的語法來串聯。

如果您希望它們顯示爲數字,則需要在val01或val02字段上使用CAST或CONVERT以將它們添加爲數字值。

實施例:

SELECT val01,val02,val03 FROM TABLE_1 WHERE CAST(val03作爲INT)=((CAST val01作爲INT)+(CAST val02作爲INT))