我在UI界面中有一个字段,它传递给存储过程一个空值(当字段未填充时)或填充时的合同号。合同编号的子字符串被接受作为输入。 在程序中,我需要通过此参数过滤结果。 我需要类似的东西:
SELECT * FROM tableName tn
WHERE
tn.ContractNumber LIKE ISNULL('%' + @contractNumber + '%', tn.ContractNumber)
您认为这是最好的方法吗?问题是使用这样的条件不会返回值。
答案 0 :(得分:0)
简单地:
SELECT *
FROM tableName tn
WHERE tn.ContractNumber LIKE '%' + @contractNumber + '%'
OR @contractNumber IS NULL
您确实在检查多个条件,因此将它们分开读取更直观(对于大多数人来说,无论如何)。
我认为这只是一个示例查询,而您实际上并没有选择*
...
答案 1 :(得分:0)
另一个:
SELECT *
FROM tableName tn
WHERE tn.ContractNumber LIKE '%' + ISNULL(@contractNumber, '%') + '%'