2011-01-21 15 views
8

(यूडीएफ का उपयोग करने के अलावा) डीबी 2 9.7 के लिए कोई भी REGEXP-in-SQL समर्थन में नियमित अभिव्यक्तियां?डीबी 2 एसक्यूएल

+3

http://www.ibm.com/developerworks/data/library/techarticle/0301stolze/0301stolze.html –

उत्तर

2

डीबी 2 9.7 में नियमित अभिव्यक्तियों के लिए कोई अंतर्निहित समर्थन नहीं है।

एकमात्र तरीका यूडीएफ या तालिका कार्यों का उपयोग कर रहा है जैसा कि टिप्पणी में उल्लिखित लेख 'ओएमजी पोनी' में वर्णित है।

@ dan1111: मैं अपनी पोस्ट को संपादित करने की सराहना नहीं करता, खासकर अगर लोग सही तरीके से प्रश्न नहीं पढ़ सकते हैं। ओपी पूछा डीबी 2 9.7

के लिए किसी भी regexp-in- एसक्यूएल समर्थन

एसक्यूएल XQuery नहीं है !!!

क्षमा करें, मेरे 100% सही उत्तर का पाठ हटाएं। आप कोई टिप्पणी जोड़ सकते हैं या अपना जवाब लिख सकते हैं।

+2

यह सच नहीं है। नियमित अभिव्यक्ति को मैक फ़ंक्शन के साथ xQuery के माध्यम से डीबी 2 9.7 में समर्थित किया गया था: http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.xml.doc/doc/xqrfnmat। एचटीएमएल – AngocA

+0

अब xQuery के बिना: http://stackoverflow.com/a/38522897/1388357 –

+0

@TannerFaulkner यह समय के बारे में है। ;-) आईबीएम हमेशा स्पष्ट जोड़ने के साथ देर हो चुकी है। – tessus

6

मैं कॉमिकोनी (केइसुक कोनिशी) हूं।

मैंने नियमित अभिव्यक्ति फ़ंक्शन (यूडीएफ) बनाया जो डीबी 2 में मौजूद नहीं है। एसक्यूएल/एक्सएमएल (एक्सक्वरी) का उपयोग करते हुए यूडीएफ। आप आसानी से स्थापित कर सकते हैं।

नियमित अभिव्यक्ति की सूची उपलब्ध कराने यूडीएफ

  1. REG_MATCHES संयोग अस्तित्व (अदिश) प्रदान करता है
  2. REG_REPLACE स्ट्रिंग प्रतिस्थापन (अदिश)
  3. REG_COUNT लिया गया मैचों की संख्या (स्केलर)
  4. REG_POSITION मैच स्थिति प्राप्ति (अदिश)
  5. REG_SUBSTR एक स्ट्रिंग मिलान (अदिश)
  6. REG_SUBSTR_TABLE स्ट्रिंग जानकारी मिलान (तालिका) बेमेल की
  7. REG_TOKENIZE_TABLE सूची की सूची हो जाता है स्ट्रिंग जानकारी (एक विभाजक स्ट्रिंग द्वारा विभाजित) (तालिका)
  8. REG_ALLTOKEN_TABLE बेमेल स्ट्रिंग और से मिलता जुलता स्ट्रिंग जानकारी (तालिका)

स्क्रिप्ट की सूची यहां से डाउनलोड किया जा सकता है। (जापानी में क्षमा करें)

https://www.ibm.com/developerworks/jp/data/library/db2/j_d-regularexpression/

(अंग्रेज़ी: Machine translation स्क्रिप्ट: एक जापानी पेज के अंतिम)

मैं आपकी प्रतिक्रिया और टिप्पणियों के लिए तत्पर हैं।

6

असली उत्तर यह है कि डीबी 2 नियमित अभिव्यक्ति का समर्थन करता है क्योंकि PUREXML को जोड़ा गया था (v9.7 शामिल) xQuery के माध्यम से मैक्स फ़ंक्शन के साथ।

उदाहरण के लिए:

db2 "with val as (
select t.text 
from texts t 
where xmlcast(xmlquery('fn:matches(\$TEXT,''^[A-Za-z 0-9]*$'')') as integer) = 0 
) 
select * from val" 

अधिक जानकारी के लिए:

5

कि डीबी 2 z/OS के अलावा ठीक काम करता है - डीबी 2 v10 z/OS में आप का उपयोग करना चाहिए

with val as (
    select t.text 
    from texts t 
    where xmlcast(xmlquery('fn:matches($v,"^[A-Za-z 0-9]*$")' 
        PASSING t.text as "v") as integer) = 0 
    ) 
    select * from val 
के रूप में पासिंग
4

डीबी 2 11.1 से शुरू होने पर अंतर्निहित रेगेक्स समर्थन है। नए फ़ंक्शन में से एक REGEXP_SUBSTR है और कुछ और हैं।

SELECT REGEXP_SUBSTR('hello to you', '.o',1,1) 
    FROM sysibm.sysdummy1 
+0

REGEXP_SUBSTR (कम से कम) V7R1 आगे – ATorras

+0

निश्चित रूप से काम करता है। इस पर ध्यान दिलाने के लिए धन्यवाद। – xenoid

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