PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एकाधिक स्तंभों के बीच मिलान पैटर्न

उत्तर अब तक आपके प्रश्न का समाधान करने में विफल हैं:

इससे कोई फर्क नहीं पड़ता कि आप LIKE . का उपयोग करते हैं या नहीं या = जब तक आप पूरी स्ट्रिंग से मेल खाते हैं (और कोई वाइल्डकार्ड वर्ण नहीं हैं में आपकी स्ट्रिंग)। खोज को अस्पष्ट बनाने के लिए, आपको प्रतिस्थापित करना होगा पैटर्न का हिस्सा, न कि केवल उसमें जोड़ें।

उदाहरण के लिए, subcolumn . के अंतिम 7 (8 के बजाय) वर्णों से मिलान करने के लिए :

SELECT *
FROM   maintable m
WHERE  left(maincolumn, 8) LIKE 
       ( '%' || left((SELECT subcolumn FROM subtable WHERE subid = 2), 7));

मैं सरल left() का उपयोग करता हूं (पोस्टग्रेज 9.1 के साथ पेश किया गया)।
आप could इसे सरल करें:

SELECT *
FROM   maintable m
WHERE  left(maincolumn, 7) =
       (SELECT left(subcolumn,7) FROM subtable WHERE subid = 2);

लेकिन आप नहीं करेंगे यदि आप उस विशेष अनुक्रमणिका का उपयोग करते हैं जिसका मैंने आगे उल्लेख किया है, क्योंकि कार्यात्मक अनुक्रमणिका में अभिव्यक्तियों का उपयोग करने के लिए सटीक रूप से मिलान करना होता है।

आपको एक्सटेंशन pg_tgrm में दिलचस्पी हो सकती है

PostgreSQL 9.1 में प्रति डेटाबेस एक बार चलाएं:

CREATE EXTENSION pg_tgrm;

दो कारण:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सबक्वेरी के बिना PostgreSQL में कुल का प्रतिशत

  2. पोस्टग्रेस्क्ल और कोडनिर्देशक को जोड़ना

  3. PostgreSQL के साथ जगह में अपडेट

  4. विशिष्ट क्रम में एकाधिक मानों द्वारा एसक्यूएल ऑर्डर?

  5. PostgreSQL के साथ रेल 3 ऐप - वार्तालाप द्वारा समूहीकृत संदेशों की सूची प्राप्त करना