iT邦幫忙

0

同一個欄位符合兩個條件的SQL怎麼下

XYZ 2021-04-12 14:54:14845 瀏覽

Table a 有個欄位是退租日有日期或NULL
我要篩選退租日是2021年3月 (LIKE '2021-03%')和NULL的資料要怎麼下SQL?

看更多先前的討論...收起先前的討論...
石頭 iT邦研究生 2 級 ‧ 2021-04-12 14:55:04 檢舉
你的DBMS是哪個?
退租日的資料類型是?
XYZ iT邦新手 5 級 ‧ 2021-04-12 15:17:15 檢舉
日期格式
XYZ iT邦新手 5 級 ‧ 2021-04-12 15:17:57 檢舉
MSSQL
3
純真的人
iT邦高手 1 級 ‧ 2021-04-12 14:59:38
最佳解答

MSSQL是這樣..

select *
from 表格
where (1=2
 or 日期 LIKE '2021-03%'
 or 日期 is null
)
看更多先前的回應...收起先前的回應...
XYZ iT邦新手 5 級 ‧ 2021-04-12 15:22:29 檢舉

謝謝您 ^^

微笑 iT邦新手 4 級 ‧ 2021-04-12 15:26:48 檢舉

想請問1=2的功用是甚麼

微笑
1=2是我的創法@@..以前寫程式過濾用的...
例如這樣@@..

Sql = ""
Sql &= " select *"
Sql &= " from 表格"
Sql &= " where (1=2"
if DateArea <> "" then
  Sql &= "  or 日期 LIKE '" & DateArea & "%'"
end if
if Date_yn = 1 then
  Sql &= "  or 日期 is null"
end if
Sql &= " )"
微笑 iT邦新手 4 級 ‧ 2021-04-12 16:55:09 檢舉

喔喔~了解
看起來是為了讓後端方便處理
感謝您解惑/images/emoticon/emoticon37.gif

1
石頭
iT邦研究生 2 級 ‧ 2021-04-12 14:59:23

假如退租日是日期可以考慮使用 讀取年月方法

如果退租日不是日期型態 請考慮改使用日期(可以省下資源跟很多麻煩)

請使用OR

SELECT *
FROM a
WHERE (YEAR(RefundDate) = 2021 AND MONTH(RefundDate)) OR (RefundDate IS NULL)
0
japhenchen
iT邦大師 1 級 ‧ 2021-04-12 15:05:09

MSSQL

SELECT quitdate 
    FROM hr.dbo.employee 
    WHERE   quitdate LIKE '2020-03%' OR 
            quitdate IS NULL

XYZ iT邦新手 5 級 ‧ 2021-04-12 15:20:52 檢舉

這個無法篩選出我要的資料, 很多資料都列出來

不解,這個我自己試是正常的耶

不過罷了,答案都確定了

這個我推測..他應該是直接複製改..
然後串接他的SQL~因為你沒有用括號起來~所以條件搜尋異常@@

SELECT quitdate 
FROM hr.dbo.employee 
WHERE quitdate LIKE '2020-03%' 
OR quitdate IS NULL
and 其他條件...

有加括號的差別

SELECT quitdate 
FROM hr.dbo.employee 
WHERE (quitdate LIKE '2020-03%' 
OR quitdate IS NULL)
and 其他條件...
0
allenlwh
iT邦高手 1 級 ‧ 2021-04-12 15:07:17
where (convert(varchar(10),退租日,112) like '202103%') or (退租日 is null)

我要發表回答

立即登入回答