3 回答

TA貢獻2041條經(jīng)驗 獲得超4個贊
使用CASE語句
UPDATE:先前的語法(如少數(shù)人指出的那樣)不起作用。您可以按以下方式使用CASE:
WHERE OrderNumber LIKE
CASE WHEN IsNumeric(@OrderNumber) = 1 THEN
@OrderNumber
ELSE
'%' + @OrderNumber
END
或者您可以使用@NJ Reed指出的IF語句。

TA貢獻1998條經(jīng)驗 獲得超6個贊
您應該能夠在沒有任何IF或CASE的情況下執(zhí)行此操作
WHERE
(IsNumeric(@OrderNumber) AND
(CAST OrderNumber AS VARCHAR) = (CAST @OrderNumber AS VARCHAR)
OR
(NOT IsNumeric(@OrderNumber) AND
OrderNumber LIKE ('%' + @OrderNumber))
根據(jù)SQL的風格,您可能需要根據(jù)是否支持隱式強制轉換將訂單號上的強制轉換調(diào)整為INT或VARCHAR。
這是WHERE子句中非常常見的技術。如果要在WHERE子句中應用某些“ IF”邏輯,您需要做的就是將帶有布爾AND的額外條件添加到需要應用它的部分。

TA貢獻1802條經(jīng)驗 獲得超6個贊
您根本不需要IF語句。
WHERE
(IsNumeric(@OrderNumber) = 1 AND OrderNumber = @OrderNumber)
OR (IsNumeric(@OrderNumber) = 0 AND OrderNumber LIKE '%' + @OrderNumber + '%')
- 3 回答
- 0 關注
- 3060 瀏覽
添加回答
舉報