2012-10-28 31 views
5

मेरे पास SQL ​​से संबंधित एक प्रश्न है।एसक्यूएल पैटर्न मिलान

मैं समानता के लिए दो फ़ील्ड से मेल खाना चाहता हूं और यह कितना समान है इस पर प्रतिशत लौटाता हूं।

उदाहरण के लिए अगर मैं एक क्षेत्र डॉक कहा जाता है, जो शामिल है निम्नलिखित

This is my first assignment in SQL 

और एक अन्य क्षेत्र में मुझे पता है कि कैसे मैं समानताएं जांच कर सकते हैं की तरह

My first assignment in SQL 

मैं चाहता हूँ कुछ है दोनों के बीच और कितना प्रतिशत से वापस आते हैं।

मैंने कुछ शोध किया और दूसरी राय चाहता था और मैंने कभी भी स्रोत कोड के लिए नहीं पूछा। Ive Soundex(), अंतर(), लेवेनशेटिन दूरी एल्गोरिदम का उपयोग कर फ़ज़ी स्ट्रिंग मिलान पर देखा।

+3

युक्ति: 'हैमिंग distance' और इसी तरह की स्ट्रिंग समानता एल्गोरिदम –

+1

में देखो मैं कुछ शोध किया और एक दूसरे की राय चाहते थे प्लस मैं स्रोत कोड के लिए कभी नहीं पूछा। Ive Soundex(), अंतर(), लेवेनशेटिन दूरी एल्गोरिदम का उपयोग कर फ़ज़ी स्ट्रिंग मिलान पर देखा। टिप के लिए धन्यवाद फिर भी – user1781162

उत्तर

5

आपने यह नहीं कहा कि ओरेकल का आप किस संस्करण का उपयोग कर रहे हैं। यह उदाहरण 11 जी संस्करण पर आधारित है। आप पैकेज के edit_distance फ़ंक्शन का उपयोग करके यह निर्धारित कर सकते हैं कि एक स्ट्रिंग को दूसरे में बदलने के लिए आपको कितने अक्षर बदलने की आवश्यकता है। greatest फ़ंक्शन पैरामीटर में पारित की सूची में सबसे बड़ा मान देता है।

-- sample of data 
with t1(col1, col2) as(
    select 'This is my first assignment in SQL', 'My first assignment in SQL ' from dual 
) 
-- the query 
select trunc(((greatest(length(col1), length(col2)) - 
       (utl_match.edit_distance(col2, col1))) * 100)/
      greatest(length(col1), length(col2)), 2) as "%" 
    from t1 

परिणाम:

  % 
---------- 
    70.58 

परिशिष्ट

रूप @jonearles सही ढंग से कहा, यह utl_match पैकेज के edit_distance_similarity समारोह का उपयोग करने के बहुत सरल है यहाँ एक उदाहरण है।

with t1(col1, col2) as(
    select 'This is my first assignment in SQL', 'My first assignment in SQL ' from dual 
) 
    select utl_match.edit_distance_similarity(col1, col2) as "%" 
    from t1 
    ; 

परिणाम:

  % 
---------- 
     71 
+0

धन्यवाद! मैं ओरेकल 11 जी का उपयोग कर रहा हूँ। मैं किसी भी कोड की उम्मीद नहीं कर रहा था धन्यवाद! – user1781162

+2

+1 आप इसे 'utl_match.edit_distance_similarity (col1, col2)' के साथ शायद सरल बना सकते हैं। –