MS SQLのWHERE句の中にIF句を使用することは可能ですか?
例を挙げます。
WHERE
IF IsNumeric(@OrderNumber) = 1
OrderNumber = @OrderNumber
ELSE
OrderNumber LIKE '%' + @OrderNumber + '%'
CASE]1ステートメントの使用 UPDATE: 以前の構文(何人かの方に指摘されました)では、'動作しません。 CASEは以下のように使うことができます。
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber) = 1 THEN
@OrderNumber
ELSE
'%' + @OrderNumber
END
あるいは、@N. J. Reedが指摘するようにIF文を使うこともできます。
CASEステートメントを
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber)=1 THEN @OrderNumber ELSE '%' + @OrderNumber END