SQL Server检查值是否为isnull内的子字符串

时间:2018-02-13 15:49:21

标签: sql sql-server where-clause isnull

我在UI界面中有一个字段,它传递给存储过程一个空值(当字段未填充时)或填充时的合同号。合同编号的子字符串被接受作为输入。 在程序中,我需要通过此参数过滤结果。 我需要类似的东西:

SELECT * FROM tableName tn
WHERE
tn.ContractNumber LIKE ISNULL('%' + @contractNumber + '%', tn.ContractNumber)

您认为这是最好的方法吗?问题是使用这样的条件不会返回值。

2 个答案:

答案 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, '%') + '%'