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 15:47] – 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 === | ||
| + | <code SQL> | ||
| + | SELECT 1 WHERE ' | ||
| + | SELECT 1 WHERE ' | ||
| + | -- Does each element appearing in the 2nd array equal some element of the 1st array | ||
| + | SELECT ARRAY[1, | ||
| + | SELECT ARRAY[1, | ||
| + | -- Does each element appearing in the 1st array equal some element of the 2nd array | ||
| + | SELECT ARRAY[1,3] <@ ARRAY[1, | ||
| + | SELECT ARRAY[1, | ||
| + | -- Do the arrays have any elements in common. | ||
| + | SELECT ARRAY[1, | ||
| + | SELECT ARRAY[1, | ||
| + | </ | ||
| === Append / Prepend === | === Append / Prepend === | ||
| - | < | + | < |
| SELECT ARRAY[1, | SELECT ARRAY[1, | ||
| SELECT array_append(ARRAY[1, | SELECT array_append(ARRAY[1, | ||
| Line 13: | Line 33: | ||
| === Replace / Remove === | === Replace / Remove === | ||
| - | < | + | < |
| SELECT array_replace(ARRAY[1, | SELECT array_replace(ARRAY[1, | ||
| SELECT array_remove(ARRAY[1, | SELECT array_remove(ARRAY[1, | ||
| + | </ | ||
| + | |||
| + | === Concatenate === | ||
| + | <code SQL> | ||
| + | SELECT ARRAY[1, | ||
| + | SELECT 0 || ARRAY[1, | ||
| + | SELECT array_cat(ARRAY[0], | ||
| </ | </ | ||
| === Length === | === Length === | ||
| - | < | + | < |
| SELECT array_length(ARRAY[1, | SELECT array_length(ARRAY[1, | ||
| SELECT cardinality(ARRAY[1, | SELECT cardinality(ARRAY[1, | ||
| Line 25: | Line 52: | ||
| === Position === | === Position === | ||
| - | < | + | < |
| SELECT array_position(ARRAY[1, | SELECT array_position(ARRAY[1, | ||
| SELECT array_positions(ARRAY[1, | SELECT array_positions(ARRAY[1, | ||
| </ | </ | ||
| - | == Conversion === | + | === Conversion === |
| - | < | + | < |
| - | SELECT array_to_string(ARRAY[1, | + | SELECT array_to_string(ARRAY[1, |
| - | SELECT unnest(ARRAY[1, | + | SELECT unnest(ARRAY[1, |
| + | 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.1709567269.txt.gz · Last modified: (external edit)
