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

Postgres - 2 ARRAYs के प्रतिच्छेदन को वापस करने का कार्य?

8.4 के बाद से, पोस्टग्रेज़ में उपयोगी बिल्टिन हैं जो पहले उत्तर से फ़ंक्शन को आसान और संभवतः तेज़ बनाते हैं (यही वह है जो EXPLAIN मुझे बताता है, वैसे भी:"(लागत =0.00..0.07 पंक्तियों =1 चौड़ाई =64)" इस क्वेरी के लिए बनाम . "(लागत=0.00..60.02 पंक्तियाँ=1 चौड़ाई=64)" मूल वाली के लिए)।

सरलीकृत कोड है:

SELECT ARRAY
    (
        SELECT UNNEST(a1)
        INTERSECT
        SELECT UNNEST(a2)
    )
FROM  (
        SELECT  array['two', 'four', 'six'] AS a1
              , array['four', 'six', 'eight'] AS a2
      ) q;

और हाँ, आप इसे एक फ़ंक्शन में बदल सकते हैं:

CREATE FUNCTION array_intersect(anyarray, anyarray)
  RETURNS anyarray
  language sql
as $FUNCTION$
    SELECT ARRAY(
        SELECT UNNEST($1)
        INTERSECT
        SELECT UNNEST($2)
    );
$FUNCTION$;

जिसे आप

. कह सकते हैं
SELECT array_intersect(array['two', 'four', 'six']
                     , array['four', 'six', 'eight']);

लेकिन आप इसे इनलाइन भी कह सकते हैं:

 SELECT array(select unnest(array['two', 'four', 'six']) intersect
              select unnest(array['four', 'six', 'eight']));


  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 तरीके

  2. JPA में अपवाद PostgreSQL के लिए बीज फ़ाइल का उपयोग करते समय

  3. PostgreSQL (psql) में नल आउटपुट के लिए वर्तमान सेटिंग कैसे दिखाएं

  4. Postgres . में मान बढ़ाएँ

  5. पोस्टग्रेज़ यूयूआईडी जेडीबीसी काम नहीं कर रहा है