2012-07-19 65 views
3

甲骨文選擇查詢我有一個表,它看起來像:與SUBSTR

DAYDATE  TIMEOFDAY USERID 
18-JUL-12 Afternoon mistu4u 
18-JUL-12 Noon  mistu4u 
20-JUL-12 Noon  mistu4u 
21-JUL-12 Afternoon mistu4u 
11-SEP-12 Afternoon rimo 
06-AUG-12 Noon  rimo 
14-JUN-12 Noon  mistu4u 

現在我想獲取用於mistu4u他們的DayDate的一個月是「jul'.I試圖像

select * from mealdb where userid='mistu4u' and substr(daydate,4,3)='jul'; 

這些值但它是給'沒有數據發現'。

+0

另外任何人都可以建議如果同樣可以通過「喜歡」關鍵字來來達到的! – Mistu4u 2012-07-19 13:38:27

+0

「DAYDATE」的數據類型是什麼?你想要任何一年的七月? – Tebbe 2012-07-19 13:38:54

+0

daydate的數據類型是varchar2 – Mistu4u 2012-07-19 13:40:23

回答

3

您的安裝是否區分大小寫?這個SQL是否工作?

select * from mealdb where userid='mistu4u' and substr(daydate,4,3)='JUL'; 
+0

OMG !!這是!!它只是工作!!但我確定我想讓它不區分大小寫。@ ProfessionalAmateur你能告訴我如何做到這一點嗎?你也可以建議如何寫「LIKE」。 – Mistu4u 2012-07-19 13:43:12

+0

@Subir Adhikari - 它可以完成。檢查[這裏](http://stackoverflow.com/questions/5391069/make-oracle-sql-like-query-case-insensitive) – ProfessionalAmateur 2012-07-19 14:01:24

0

嘗試

SELECT * 
FROM mealdb 
WHERE userid = 'mistu4u' 
AND TO_NUMBER(TO_CHAR(daydate,'MM')) = 7 
; 
0

嘗試

TRUNC(daydate, 'MONTH') = '01-JULY-2012' 

要小心,如果你對的DayDate列的任何索引。 substr會使它無用。也許,請考慮使用BETWEEN。

此外,大多數解決方案將在7月份的年的任何年中獲取所有記錄。

0

試試這個:

select * from mealdb where userid='mistu4u' and daydate like '%JUL%';