亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL:WHERE子句中的IF子句

SQL:WHERE子句中的IF子句

開滿天機 2019-10-15 13:56:51
是否可以在MS SQL 的WHERE子句中使用IF子句?例:WHERE    IF IsNumeric(@OrderNumber) = 1        OrderNumber = @OrderNumber    ELSE        OrderNumber LIKE '%' + @OrderNumber + '%'
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

使用CASE語句

UPDATE:先前的語法(如少數人指出的那樣)不起作用。您可以按以下方式使用CASE:


WHERE OrderNumber LIKE

  CASE WHEN IsNumeric(@OrderNumber) = 1 THEN 

    @OrderNumber 

  ELSE

    '%' + @OrderNumber

  END

或者您可以使用@NJ Reed指出的IF語句。


查看完整回答
反對 回復 2019-10-15
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

您應該能夠在沒有任何IF或CASE的情況下執行此操作


 WHERE 

   (IsNumeric(@OrderNumber) AND

      (CAST OrderNumber AS VARCHAR) = (CAST @OrderNumber AS VARCHAR)

 OR

   (NOT IsNumeric(@OrderNumber) AND

       OrderNumber LIKE ('%' + @OrderNumber))

根據SQL的風格,您可能需要根據是否支持隱式強制轉換將訂單號上的強制轉換調整為INT或VARCHAR。


這是WHERE子句中非常常見的技術。如果要在WHERE子句中應用某些“ IF”邏輯,您需要做的就是將帶有布爾AND的額外條件添加到需要應用它的部分。


查看完整回答
反對 回復 2019-10-15
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

您根本不需要IF語句。


WHERE

    (IsNumeric(@OrderNumber) = 1 AND OrderNumber = @OrderNumber)

OR (IsNumeric(@OrderNumber) = 0 AND OrderNumber LIKE '%' + @OrderNumber + '%')


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 3075 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號