使用Like运算符的情况

时间:2016-07-26 16:55:25

标签: sql sql-server sql-server-2008 tsql

坚持使用 CASE 语句与 LIKE 运算符。在下面的存储过程中,所有参数都不是必需的,因此当User没有输入PatientName进行搜索时,下面的查询不会返回预期结果,因为LIKE运算符在外面是显而易见的。我正在寻找这样的东西,以便当用户不输入PatientName时,它将是

-$-100k

==========改变它像这样。这是完美的===========

function () {
    var isNegative = this.value < 0 ? '-' : '';
    var absValue = Math.abs(this.value);
    return isNegative + '$' + this.axis.defaultLabelFormatter.call({
        axis: this.axis,
        value: absValue
    });
}

2 个答案:

答案 0 :(得分:0)

T-SQL有两种形式的CASE。您正在使用“简单案例”。尝试“搜索案例” - 例如:

CASE               
WHEN @PatientName = '' THEN [ return something ]
WHEN @PatientName like [ pattern ] THEN [ return something ]
ELSE [ return something else ]
END

答案 1 :(得分:0)

请勿在{{1​​}}中使用CASE WHEN。使用where clause

OR

而不是

 (
   @PatientName = '' OR 
   (c.LastName + c.Firstname) LIKE  '%' + @PatientName + '%'
 ) AND
 (
   @User = '' OR
   a.[User] LIKE  '%' + @User + '%' 
 ) -- Same for others