我試圖連接數據庫的字符串值,但是在此聲明:SQL服務器+動態查詢+'數據類型nvarchar和位在添加操作符中不兼容。'
SET @sql = ('select' + @var1 + '+' + convert(varchar,@var2) +
'from [VoucherType] where [DeletedBy] is null and [AutoID] = 1')
我得到一個錯誤說
的數據類型爲nvarchar和位是不相容的添加 操作。
@var2
這是我的數據庫[IsBirthdayVoucher]
是一個bit
類型,但是我已經在上面應用convert(varchar, @var2)
。請善意建議我做錯了什麼。謝謝。
存儲過程:
declare @Str as varchar(max)
declare @var1 as varchar(30)=null
declare @var2 as varchar(30)=null
declare @var3 as varchar(30)=null
declare @var4 as varchar(30)=null
declare @var5 as varchar(30)=null
declare @sql as varchar(355)
set @Str = '[Code][IsBirthdayVoucher][IsReusable]VouT'
Set @var1= (select LEFT(@Str, CHARINDEX(']', @Str)))
set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))
Set @var2 =(select LEFT(@Str, CHARINDEX(']', @Str)))
set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))
Set @var3 =(select LEFT(@Str, CHARINDEX(']', @Str)))
set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))
SET @sql = ('select' + @var1 + '+' + convert(varchar,@var2) + 'from [VoucherType] where [DeletedBy] is null and [AutoID] = 1')
EXEC(@sql)
我覺得應該* *是後'空間 'select'',即它應該是'' 選擇「'。 '['會作爲分隔符,但是爲了防禦性編程...... –
我對upvote投了贊成票。我不明白爲什麼有一個downvote,這似乎是一個合理的問題。 –