Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- create or replace function array_push(text[], text) returns text[] as $$
- select coalesce($1 || $2, array[$2]);
- $$ language sql;
- create or replace function array_push(int[], int) returns int[] as $$
- select coalesce($1 || $2, array[$2]);
- $$ language sql;
- orkut=# select array_push(array[1,2,3], 4);
- array_push
- ------------
- {1,2,3,4}
- (1 registro)
- orkut=# select array_push(null::int[], 2);
- array_push
- ------------
- {2}
- (1 registro)
- ---------------------------------------------------------------------------
- create or replace function array_pop(int[]) returns int[] as $$
- select ($1)[array_lower($1, 1) + 1 : array_upper($1, 1)];
- $$ language sql;
- orkut=# select array_pop(array[1,2,3,4]);
- array_pop
- -----------
- {2,3,4}
- (1 registro)
- orkut=# select array_pop(string_to_array('4,54,56,43', ',')::int[]);
- array_pop
- ------------
- {54,56,43}
- (1 registro)
- ---------------------------------------------------------------------------
- create or replace function array_first(int[]) returns int as $$
- select ($1)[array_lower($1, 1)];
- $$ language sql;
- orkut=# select array_first(array[2,3,5]);
- array_first
- -------------
- 2
- (1 registro)
- ---------------------------------------------------------------------------
- create or replace function array_last(int[]) returns int as $$
- select ($1)[array_upper($1, 1)];
- $$ language sql;
- orkut=# select array_last(array[1,3,5]);
- array_last
- ------------
- 5
- (1 registro)
- ---------------------------------------------------------------------------
- create or replace function array_contains(int[], int) returns boolean as $$
- select $2 = any($1);
- $$ language sql;
- orkut=# select array_contains(array[1,3,5], 4);
- array_contains
- ----------------
- f
- (1 registro)
- orkut=# select array_contains(array[1,3,5], 5);
- array_contains
- ----------------
- t
- (1 registro)
- ---------------------------------------------------------------------------
- create or replace function array_position(int[], int) returns int as $$
- declare
- ii int;
- begin
- if not $2 = any($1) then
- return null;
- end if;
- for ii in array_lower($1, 1)..array_upper($1, 1)
- loop
- if ($1)[ii] = $2 then
- return ii;
- end if;
- end loop;
- return null;
- end
- $$ language plpgsql;
- orkut=# select array_position(array[1,3,5], 3);
- array_position
- ----------------
- 2
- (1 registro)
- orkut=# select array_position(array[1,3,5], 5);
- array_position
- ----------------
- 3
- (1 registro)
- orkut=# select array_position(array[1,3,5], 4);
- array_position
- ----------------
- (1 registro)
Add Comment
Please, Sign In to add comment