2016-03-10 168 views
0

我需要您的協助以下查詢,因爲我不知道如何修改以顯示正確的結果。 列2具有與開頭的記錄:Oracle不喜歡

005.... 
04.... 
01.... 
05.... 
XYZ.... 
234.... 
6789.... 
V875.... 

我想修改查詢,以排除與例如04,01,05單個零(從上面的例子)開頭的記錄,其餘的都還好。我試過不喜歡'0%',但它排除了從零開始的記錄。我怎樣才能做到這一點?以下是我擁有的查詢示例。

Select * from table1 
where column 1 in (‘A’,’B’,’C’) and column2 ???? 
+0

讓我們來澄清一下:'04','01'是不需要的;應包括「0X」。正確?最後一句話不清楚。 – Alfabravo

+0

嗨 - 好問題,任何以單個零(0x)開頭的內容都不應包括在內。非常感謝。 – netraider

+0

非常感謝你的幫助。 – netraider

回答

1

使用正則表達式來排除與一個零開頭的記錄:

WHERE NOT Regexp_like(column, '^0[^0]'); 
2

爲此,您可以只用like

where col not like '0%' or col like '00%' 
0

嘿只是一個是否改變你不願意在這裏使用REGEXP。我們 可以使用一些OLD學校的方法來做到這一點。希望能幫助到你。

SELECT B.NMM 
FROM 
    (SELECT a.nmm, 
    CASE 
     WHEN SUBSTR(a.nmm,1,1) = '0' 
     THEN NULLIF(SUBSTR(a.nmm,1,1), SUBSTR(a.nmm,2,1)) 
     ELSE NULL 
    END chk 
    FROM 
    (SELECT '005' NMM FROM DUAL 
    UNION ALL 
    SELECT '04' NMM FROM DUAL 
    UNION ALL 
    SELECT '01' NMM FROM DUAL 
    UNION ALL 
    SELECT '05' NMM FROM DUAL 
    UNION ALL 
    SELECT 'XYZ' NMM FROM DUAL 
    UNION ALL 
    SELECT '234' NMM FROM DUAL 
    UNION ALL 
    SELECT 'V875' NMM FROM DUAL 
    )A 
)b 
WHERE B.chk IS NULL; 

-----------------------------------OUTPUT----------------------------------- 

NMM 
005 
XYZ 
234 
V875 
----------------------------------------------------------------------------- 
0

另一種簡單的

Where substr(colmn, 1,1)='0' 

但這approciate否認柱使用insex的。如果這不是問題,應該運作良好