SQL Server + 操作符 容易忽略的陷阱
阿新 • • 發佈:2020-11-19
在SQL Server中,常用 + 用於字串的聯結,最近在同事編寫一個SQL指令碼時,使用到 + 作為字串的拼接,卻發生以下錯誤:從資料型別 varchar 轉換為 bigint 時出錯。
指令碼如下:
Declare @Org bigint; declare @Sql nvarchar(1000); set @Org=1001507247175004 set @Sql='select top 1 * from MRP_PlanName where Org=' + @Org exec(@Sql)
單獨執行指令碼:
select top 1 * from MRP_PlanName where Org=1001507247175004
查詢結果正常。
後續簡單檢查之後,才反應過來,+ 操作符的使用中,並不是按照關心思維中的,直接將變數 @org 的值轉換為字串,然後拼接的
SQL Server中 操作符 + 的使用:
1、算術運算子 兩個數值型別的加法原酸數學計算
2、連線運算子字串串聯運算子,可以將兩個或兩個以上字串合併成一個字串
3、當(+)作為連線運算子時,多用於將兩個字串連接合併為一個字串,需注意以下:
3.1 當有一個運算元是數值型時,會嘗試將其他運算元轉換為數值型,如果轉換成功,則進行加和運算;如果轉換失敗,則資料庫拋錯
3.2 當有一個運算元是NULL時,結果返回NULL