1. 程式人生 > 實用技巧 >SQL Server + 操作符 容易忽略的陷阱

SQL Server + 操作符 容易忽略的陷阱

在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