PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kombinasi PostgreSQL tanpa pengulangan

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
        ;

Hasil:

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

Sayangnya saya tidak dapat menemukan cara untuk menghindari konstanta string ganda. (tetapi semuanya dapat dikemas menjadi suatu fungsi) Jika tidak ada karakter duplikat (atau Anda ingin menekannya), Anda dapat melakukan anti-join pada str alih-alih idx.

UPDATE (petunjuk dari ypercube) Tampaknya OP ingin agar string digabungkan. Jadilah itu::

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
        ;

Hasil:

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

UPDATE2:(inilah hal rekursif...)

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
        ;

Hasil 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. Akses jarak jauh Postgresql tidak ada entri pg_hba.conf untuk host

  2. Di PostgreSQL, bagaimana cara memasukkan data dengan perintah COPY?

  3. Kira-kira seberapa cepat JSON -> konversi kolom JSONB di Postgres 9.4

  4. Heroku Postgres:psql:FATAL:tidak ada entri pg_hba.conf untuk host

  5. Bagaimana sisi FROM dari UPDATE berhubungan dengan tabel yang ditargetkan untuk UPDATE?