SQL SERVER拼接字符串(字符串中有變量) 總是忘記規律,轉載過來以幫助記憶。
一、拼接字符串(整個字符串不分割)步驟:
首先在字符串的前后加單引號;
字符串中的變量以'''+@para+'''在字符串中表示;
若在執行時存在類型轉換錯誤,則應用相應的類型轉換函數,對變量進行類型轉換(如cast()函數)。
示例均采用northwind數據庫。
示例一:
包含SQL拼接字符串的存儲過程:
Create Procedure Test
@TestID int
As
Declare @s nvarchar(800)
Set @s='Select * From dbo.Categories where CategoryID='''+cast(@TestID as varchar)+''''
/* 我在使用中,這樣做時候,提示錯誤。*/
/*Set @s='Select * From dbo.Categories where CategoryID=cast('''+@TestID+''' as varchar)' 這樣的話,才成功
*/
print @s
exec(@s)
執行:
exec Test @TestID=1
執行結果:
二、拼接字符串(字符串分割)步驟:
將不包含變量的字符串前后用單引號括起來,
不含變量的字符串與變量用+進行拼接
變量用''''+@para+''''進行表示(@para為變量名);
若執行存儲過程時出現類型轉換錯誤,則采用相應的類型轉換函數進行轉換。
示例采用northwind數據庫。
示例二:
包含SQL 字符串的存儲過程:
Create Procedure Test
@TestID int
As
Declare @s nvarchar(800)
Set @s='Select * From dbo.Categories where CategoryID='+''''+cast(@TestID as varchar)+''''
/*我按照下面寫法,才通過
Set @s='Select * From dbo.Categories where CategoryID=cast('+''''+@TestID+''''+‘ as varchar)’
*/
print @s
exec(@s)
執行:
exec Test @TestID=1
執行結果: