postgresqlfunctions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
postgresqlfunctions [2024/03/08 10:11] – [JSON] z0hpvk | postgresqlfunctions [2025/03/08 22:24] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== SQL and pl/pgsql ===== | + | ===== SQL and PL/pgSQL ===== |
==== JSON ==== | ==== JSON ==== | ||
Line 5: | Line 5: | ||
==== Arrays ==== | ==== Arrays ==== | ||
+ | |||
+ | Arrays can be displayed as '' | ||
=== Operators === | === Operators === | ||
Line 64: | Line 66: | ||
ALTER TABLE name_basics ALTER primaryprofession TYPE text[] | ALTER TABLE name_basics ALTER primaryprofession TYPE text[] | ||
USING string_to_array(primaryprofession, | USING string_to_array(primaryprofession, | ||
+ | </ | ||
+ | |||
+ | ==== Hierarchical Data ==== | ||
+ | <code SQL> | ||
+ | WITH RECURSIVE t1(n) AS ( | ||
+ | VALUES (0) | ||
+ | UNION ALL | ||
+ | SELECT n+1 FROM t1 WHERE n < 5) | ||
+ | SELECT * FROM t1; | ||
+ | </ | ||
+ | |||
+ | <code SQL> | ||
+ | CREATE TABLE family (key int, parent_key int, name text); | ||
+ | INSERT INTO family VALUES (1, null, ' | ||
+ | INSERT INTO family VALUES (2, 1, ' | ||
+ | INSERT INTO family VALUES (3, 2, ' | ||
+ | INSERT INTO family VALUES (4, 2, ' | ||
+ | INSERT INTO family VALUES (5, 3, ' | ||
+ | INSERT INTO family VALUES (6, 3, ' | ||
+ | INSERT INTO family VALUES (7, 5, ' | ||
+ | INSERT INTO family VALUES (8, 1, ' | ||
+ | INSERT INTO family VALUES (9, 8, ' | ||
+ | INSERT INTO family VALUES (10, 8, ' | ||
+ | </ | ||
+ | |||
+ | <code SQL> | ||
+ | WITH RECURSIVE a AS ( | ||
+ | SELECT key, parent_key, name, 1::integer level, ARRAY[key] path, ' ' indent, | ||
+ | CASE WHEN EXISTS (SELECT 1 FROM family f2 WHERE f2.parent_key = f1.key ) | ||
+ | THEN 0 ELSE 1 END is_leaf | ||
+ | FROM | ||
+ | WHERE parent_key IS NULL | ||
+ | UNION ALL | ||
+ | SELECT b.key, b.parent_key, | ||
+ | CASE WHEN EXISTS (SELECT 1 FROM family f2 WHERE f2.parent_key = b.key ) | ||
+ | THEN 0 ELSE 1 END is_leaf | ||
+ | FROM | ||
+ | JOIN a ON a.key = b.parent_key ) | ||
+ | SELECT key, parent_key, name, level, path, is_leaf FROM a ORDER BY path; | ||
</ | </ | ||
postgresqlfunctions.1709892671.txt.gz · Last modified: 2025/03/08 22:23 (external edit)