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

बिना दोहराव के PostgreSQL संयोजन

set search_path='tmp';

WITH ztab AS (
SELECT idx as idx
, substring ( 'WTF!' FROM idx FOR 1) as str
FROM generate_series(1, char_length( 'WTF!' )) idx
)
SELECT t1.str, t2.str
FROM ztab t1
JOIN ztab t2 ON t2.idx > t1.idx
        ;

परिणाम:

 str | str 
-----+-----
 W   | T
 W   | F
 W   | !
 T   | F
 T   | !
 F   | !
(6 rows)

दुर्भाग्य से मुझे डबल स्ट्रिंग स्थिरांक से बचने का कोई तरीका नहीं मिल रहा है। (लेकिन पूरी चीज़ को एक फ़ंक्शन में पैक किया जा सकता है) यदि कोई डुप्लिकेट वर्ण नहीं हैं (या आप उन्हें दबाना चाहते हैं) तो आप idx के बजाय str पर एंटी-जॉइन कर सकते हैं।

अद्यतन (ypercube से संकेत) ऐसा प्रतीत होता है कि ओपी चाहता है कि तारों को जोड़ा जाए। तो हो::

WITH ztab AS (
SELECT idx as idx
, substring ( 'WTF!' FROM idx FOR 1) as str
FROM generate_series(1, char_length( 'WTF!' )) idx
)
SELECT t1.str || t2.str AS results
FROM ztab t1
JOIN ztab t2 ON t2.idx > t1.idx
        ;

परिणाम:

 results 
---------
 WT
 WF
 W!
 TF
 T!
 F!
(6 rows)

UPDATE2:(यहाँ रिकर्सिव चीज़ आती है...)

WITH RECURSIVE xtab AS (
        WITH no_cte AS (
        SELECT
        1::int AS len
        , idx as idx
        , substring ( 'WTF!' FROM idx FOR 1) as str
        FROM generate_series(1, char_length( 'WTF!' )) idx
        )
        SELECT t0.len as len
                , t0.idx
                , t0.str
        FROM no_cte t0
        UNION SELECT 1+t1.len
                , tc.idx
                , t1.str || tc.str AS str
        FROM xtab t1
        JOIN no_cte tc ON tc.idx > t1.idx
        )
SELECT * FROM xtab
ORDER BY len, str
-- WHERE len=2
        ;

परिणाम 3:

 len | idx | str  
-----+-----+------
   1 |   4 | !
   1 |   3 | F
   1 |   2 | T
   1 |   1 | W
   2 |   4 | F!
   2 |   4 | T!
   2 |   3 | TF
   2 |   4 | W!
   2 |   3 | WF
   2 |   2 | WT
   3 |   4 | TF!
   3 |   4 | WF!
   3 |   4 | WT!
   3 |   3 | WTF
   4 |   4 | WTF!
(15 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडोज 7 में लार्वेल के साथ PostgreSQL डेटाबेस का बैकअप और रिस्टोर करें और लोकलहोस्ट वातावरण को सेटअप करें

  2. PostgreSQL 9.5 . पर MERGE करें

  3. पोस्टग्रेज में 'कथन के लिए' ट्रिगर का उपयोग कैसे करें?

  4. Postgresql में सलाहकार ताले पर समयबाह्य

  5. pg_dump:अमान्य विकल्प -- मैं माइग्रेट करते समय