我有一个带有where子句的SQL查询,这些子句必须根据某些列的值列表排除行,这些列表可能是硬编码的(由用户提供)或从其他选择查询构造。 此外,硬编码列表可能会被用户更新,因此我每次都需要更新查询列表,这是不方便的。
我想知道参数这些列表的最佳方法。
WHERE子句的例子:
WHERE
Article_Code not in ('PA_003','PA_003','PE_234','FR_980','FA_333','FC_001','TA_999','FC_212','DC_009','FF_333','PR_001')
AND
((Partner_Status != 'Radied') or (Partner_Status = 'Radied' and Partner_Code in ('PR_000453','PR_0004311T','PR_V3345','PR_004D55') ))
AND
(Case_Code not in (select Case_Code from Agreement where DDR = 3))
一种方法是使用以下结构构建参数表:(ExclusionCode - Column - ColumnMemberToExclude - ExclusionDescription):
然后将where子句构造为此表中的字符串。
这是最好的方法吗?