2014-06-25 82 views
0

我嘗試創建一個動態sql查詢。但在動態查詢中,我無法計算如何使用複雜函數。我嘗試了很多組合,但它直到給eror.it給出在 列中有錯誤,其中包括RTIM LTRIM函數代碼和錯誤,如下所示。操作數數據類型nvarchar對於減法運算符無效

declare @karorani decimal   set @karorani=0 
declare @toplamkar decimal   set @toplamkar=0 
declare @toplamciro decimal  set @toplamciro=0 
declare @odemetipi nvarchar(12) set @odemetipi='Hepsi' 
declare @columns nvarchar(100) set @table='new_flightreservation' 
declare @sqlcommand nvarchar(max) set @columns='new_salesorderid' 
declare @table nvarchar(100)  

    set @sqlcommand='select ' + @columns + ' from ' + @table +' M ' + 'LEFT JOIN '+ 
'new_new_paymnet_'[email protected] +' F '+ ' on ' + ' M.'[email protected]+'Id'+'=F.'[email protected]+'Id' + 
' left join new_payment P '+'on '+ 'F.new_paymentid=P.new_paymentId where 
'(LTIM(RTRIM((left (P.new_name,(CHARINDEX('-',P.new_name)-1))))[email protected] //error 
    or @odemetipi+=Hepsi)' 

    execute (@sqlcommand) 

    error: Operand data type nvarchar is invalid for subtract operator. 
+0

我認爲你需要躲避' '''使用' ''所以'' ...... CHARINDEX( '' - '',P.new_name)-1 ...'' –

+0

不,它不工作 –

回答

0

有很多的問題與此代碼

嘗試

declare @karorani decimal   set @karorani=0 
declare @toplamkar decimal   set @toplamkar=0 
declare @toplamciro decimal   set @toplamciro=0 
declare @odemetipi nvarchar(12)  set @odemetipi='Hepsi' 
declare @table sysname    set @table='new_flightreservation' 
declare @columns nvarchar(100)  set @columns='new_salesorderid' 
declare @sqlcommand nvarchar(max) 

set @sqlcommand=' 
select ' + @columns + ' 
from ' + @table +' M ' + ' 
left join new_new_paymnet_' + @table +' F 
on M.' + @table + 'Id=F.' + @table + 'Id 
left join new_payment P 
on F.new_paymentid=P.new_paymentId 
where (ltim(rtrim((left(P.new_name,(charindex(''-'',P.new_name)-1))))=''' + @odemetipi + ''' 
or ''' + @odemetipi + '''=''Hepsi'')' 

print @sqlcommand 
-- exec(@sqlcommand) 
+0

它再次嘗試同樣的錯誤 –

相關問題