oracle_查詢?nèi)掌谑欠襁^期(大于等于某日期)
今天開發(fā)CRM的一個小功能,需求大概是這樣的:有一張存儲客戶信息的表,這個表中有一個列代表著該用戶的“提醒時間”,它意為:如果當(dāng)前時間大于等于這個值,那么該用戶就需要在展示的時候被標(biāo)記為“需要提醒”,并且需要展示需要提醒的條數(shù)。其實這個問題不應(yīng)該是個大問題,只不過本人oracle比較薄弱,需要進行記錄,以便后查。
經(jīng)過調(diào)查,我發(fā)現(xiàn)了如下幾個函數(shù)對于實現(xiàn)本需求有幫助::
1:符號判斷函數(shù) sign
函數(shù)語法:
sign(n)
函數(shù)說明:
取數(shù)字n的符號,大于0返回1,小于0返回-1,等于0返回0
示例:
一、select sign( 100 ),sign(- 100 ),sign( 0 ) from dual;
SIGN(100) SIGN(-100) SIGN(0)
———- ———- ———-
1 -1 0
二、a=10,b=20
則sign(a-b)返回-1
2:值比較函數(shù) decode
函數(shù)說明:
根據(jù)條件返回相應(yīng)值
示例:
比較每條記錄的“提醒時間”,過期或者到期就意味著需要設(shè)置提醒。
1:先比較兩個時間
表:crm_lwh_custinfo
字段:remind_date(Date)
根據(jù)sign函數(shù)的返回值進一步設(shè)置sql要返回的值
2:根據(jù)sign函數(shù)的返回值,通過decode函數(shù)設(shè)定sql要返回的值
過期或者到期都用1標(biāo)識,未到期,也就是默認值用0標(biāo)識
如果你看到這里覺得有什么更好的辦法,或者覺得這種寫法有什么不足,歡迎留言。
則sign(a-b)返回-1
2:值比較函數(shù) decode
函數(shù)說明:
根據(jù)條件返回相應(yīng)值
示例:
decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,缺省值)
該函數(shù)的含義如下:
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(缺省值)
END IF
或:
when case 條件=值1 THEN
RETURN(翻譯值1)
ElseCase 條件=值2 THEN
RETURN(翻譯值2)
......
ElseCase 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(缺省值)
END
感覺這兩個函數(shù)就足夠了,那么現(xiàn)在理清楚寫sql的思路:該函數(shù)的含義如下:
IF 條件=值1 THEN
RETURN(翻譯值1)
ELSIF 條件=值2 THEN
RETURN(翻譯值2)
......
ELSIF 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(缺省值)
END IF
或:
when case 條件=值1 THEN
RETURN(翻譯值1)
ElseCase 條件=值2 THEN
RETURN(翻譯值2)
......
ElseCase 條件=值n THEN
RETURN(翻譯值n)
ELSE
RETURN(缺省值)
END
比較每條記錄的“提醒時間”,過期或者到期就意味著需要設(shè)置提醒。
1:先比較兩個時間
表:crm_lwh_custinfo
字段:remind_date(Date)
1 sign(to_date(t.remind_date,'yyyy.mm.dd')-to_date(sysdate,'yyyy.mm.dd'))
根據(jù)sign函數(shù)的返回值進一步設(shè)置sql要返回的值
2:根據(jù)sign函數(shù)的返回值,通過decode函數(shù)設(shè)定sql要返回的值
過期或者到期都用1標(biāo)識,未到期,也就是默認值用0標(biāo)識
1 select decode(sign(to_date(t.remind_date,'yyyy.mm.dd')-to_date(sysdate,'yyyy.mm.dd')),-1,1,0,1,0)
as need_remind from crm_lwh_custinfo t
as need_remind from crm_lwh_custinfo t
如果你看到這里覺得有什么更好的辦法,或者覺得這種寫法有什么不足,歡迎留言。
posted on 2015-03-24 14:35 都較瘦 閱讀(5726) 評論(0) 編輯 收藏 所屬分類: Oracle相關(guān)問題積累