我对 SQL 很陌生,所以如果我的问题显得微不足道或者看起来好像我还没有完成我的工作,让我首先道歉。我正在努力学习如何掌握很多这些概念。
无论如何,我正在编写一个复杂的查询,最终将采用许多参数。对于这些参数,我将使用逗号分隔的字符串来允许多个变量。(我之前已经解决了这个问题,但在尝试执行SP_ExecuteSQL
.
话虽如此,这里是查询的基本内容。
DECLARE @system_status varchar(30)
SELECT @system_status = '12,14'
DECLARE @sql nvarchar(4000)
SELECT @sql = 'SELECT [system_status]
FROM VW_Document_Main
WHERE 1=1 '
IF @System_Status = '-1'
Begin
SELECT @sql = @sql + 'and system_status <> 20'
End
ELSE IF @system_status IS NOT NULL AND @system_status NOT IN ('-1','0')
Begin
SELECT @sql = @sql + 'and ' + @system_Status + ' LIKE ''%,'' + system_Status + '',%'''
当不将其构建到 sp_executesql 语句中时,我能够填充一个可用的查询,但是,由于我将构建这个查询,因此有必要采取这些步骤......关于我为什么生成非布尔错误?
编辑:不确定这是否是朝着正确方向迈出的一步,但现在在修改最终的 SELECT 语句以读取:
SELECT @sql = @sql + 'and '',''' + @system_Status + '',''' LIKE ''%,' + 'system_Status' + ',%'''
它给了我一个不同的错误:为变量赋值的 SELECT 语句不能与数据检索操作结合使用。
值得注意的是,错误显示为:在预期条件的上下文中指定的非布尔类型的表达式,靠近“,”。