postgresqlfunctions
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| postgresqlfunctions [2024/03/04 16:48] – [Arrays] z0hpvk | postgresqlfunctions [2025/03/08 22:24] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== pl/pgsql ===== | + | ===== SQL and PL/pgSQL ===== |
| + | |||
| + | ==== JSON ==== | ||
| + | [[https:// | ||
| ==== Arrays ==== | ==== Arrays ==== | ||
| + | |||
| + | Arrays can be displayed as '' | ||
| === Operators === | === Operators === | ||
| Line 54: | Line 59: | ||
| === Conversion === | === Conversion === | ||
| <code SQL> | <code SQL> | ||
| - | SELECT array_to_string(ARRAY[1, | + | SELECT array_to_string(ARRAY[1, |
| - | SELECT unnest(ARRAY[1, | + | SELECT unnest(ARRAY[1, |
| - | SELECT generate_subscripts(ARRAY[' | + | SELECT generate_subscripts(ARRAY[' |
| + | |||
| + | --Convert text column with comma separated values to array | ||
| + | ALTER TABLE name_basics ALTER primaryprofession TYPE text[] | ||
| + | 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.1709570924.txt.gz · Last modified: (external edit)
