2012-10-01 11 views
5

से शुरू होता है, मैं उन सभी पंक्तियों को ढूंढना चाहता हूं जो कॉलम मान अंक से शुरू होता है।ओरेकल एसक्यूएल: खोज कॉलम जो अंक

इसका इस अनुरोध के साथ अच्छी तरह से काम करता है:

WHERE trim(u_ods_val3.ods_itn_PHRSBMO.NO_ART_TECH_OI) IS NOT NULL 
    AND (SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1)='0' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='1' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='2 ' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='3' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='4' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='5' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='6' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='7' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='8' 
    OR SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) ='9') 

लेकिन यह बहुत लंबा है।

आपकी मदद के लिए धन्यवाद।

+1

उपयोग [LIKE] (http://docs.oracle.com/cd/B19306_01/server.102/b14200/conditions007.htm), यह बिल्कुल इसके लिए है – Yaroslav

उत्तर

1

in उपयोग करने के लिए प्रयास करें:

WHERE trim(u_ods_val3.ods_itn_PHRSBMO.NO_ART_TECH_OI) IS NOT NULL 
    AND SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) in ('0','1','2','3','4','5','6','7','8','9') 
18

Regexp_like काम में हो सकता है और बहुत कम

where regexp_like(trim(col_name), '^[0-9]') 

या का उपयोग करते हुए चरित्र वर्ग

where regexp_like(trim(col_name), '^[[:digit:]]') 
1

BETWEEN आप सभी की जरूरत है! (! NOT NULL इस मामले में निहित है)

WHERE SUBSTR(u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI,0,1) between '0' and '9' 

कि आप उस स्तंभ पर एक सूचकांक है, और इस समाधान का थोड़ा dirtyness कोई आपत्ति नहीं है, तो आप भी यह गति कर सकते हैं:

WHERE u_ods_val3.ODS_ITN_PHRSBMO.NO_ART_TECH_OI between '0' and '9~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 

यह मानता है कि NO_ART_TECH_OI में एसीआईआई कोड के साथ वर्ण नहीं हैं> 126.

संबंधित मुद्दे