簡體   English   中英

如何在SQL Select查詢中連接Int變量

[英]How to concatenate Int variable in the SQL Select Query

我必須編寫一個選擇查詢,並在選擇結果中串聯存儲過程Exec。

這是實際的存儲過程執行結果

exec wf_Move_bills ''' + billid+ ''',361,14098,14100, ''+ binid +'' ,''' + @comment + ''' 

BinId是一個整數。 我在連接查詢時遇到麻煩。

結果返回為:

exec wf_Move_bills 'XZ242344',361,14098,14100, '+ binid +' ,'Moved by Dev :' 

預期結果是:

exec wf_Move_bills 'XZ242344',361,14098,14100, 300 ,'Moved by Dev :' 

因為在存儲過程中, binid參數是int ,其長度為4

declare @comment nvarchar(4000) 
set @comment= 'Moved by Dev:'

select 
    *,
    'exec wf_Move_bills ''' + billid+ ''',361,14098,14144, ''+ binid +'' ,''' + @comment + ''' '
from 
    billingtable

+超載。 也就是說,它意味着字符串連接和加法。 如果任何值是數字,則它是加法,並且會出現錯誤。

所以,做一個明確的cast

select *, 
       'exec wf_Move_bills ''' + billid+ ''',361,14098,14100, ''' + cast(binid as varchar(255)) +''' ,''' + @comment + ''' 

另外,對於這種類型的邏輯,我經常使用replace:

declare @str nvarchar(max);
set @str = 'exec wf_Move_bills @billid, 361, 14098, 14100, @binid, ''@comment''';

set @str = replace(@str, '@billid', @billid);
set @str = replace(@str, '@binid', @binid);
set @str = replace(@str, '@comment', replace(@comment, '''', '''''');

注意:這也為處理注釋中的任何單引號提供了機會。

您也可以使用sp_executedql進行變量替換。

''+ binid +''更改為''+ convert(varchar(10), binid) +''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM