SQL: WHERE cümlesi içinde IF cümlesi

MS SQL'de bir WHERE cümlesi içinde bir IF cümlesi kullanmak mümkün müdür?

Örnek:

WHERE
    IF IsNumeric(@OrderNumber) = 1
        OrderNumber = @OrderNumber
    ELSE
        OrderNumber LIKE '%' + @OrderNumber + '%'
Çözüm

CASE]1 deyimi kullanın GÜNCELLEME: Önceki sözdizimi (birkaç kişi tarafından belirtildiği gibi) çalışmıyor. CASE'i aşağıdaki gibi kullanabilirsiniz:

WHERE OrderNumber LIKE
  CASE WHEN IsNumeric(@OrderNumber) = 1 THEN 
    @OrderNumber 
  ELSE
    '%' + @OrderNumber
  END

Ya da @N. J. Reed'in işaret ettiği gibi bir IF deyimi kullanabilirsiniz.

Yorumlar (2)

IF yerine bir CASE deyimi kullanın.

Yorumlar (0)

CASE deyimini istiyorsunuz

WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber)=1 THEN @OrderNumber ELSE '%' + @OrderNumber END
Yorumlar (0)