--- id: arrays title: 'Working With Arrays' description: How to use arrays in PostgreSQL and the Supabase API. --- import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' PostgreSQL supports flexible [array types](https://www.postgresql.org/docs/12/arrays.html). These arrays are also supported in the Supabase Dashboard and in the JavaScript API. ## Create a table with an array column Create a test table with a text array (an array of strings): 1. Go to the [Table editor](https://app.supabase.com/project/_/editor) page in the Dashboard. 1. Click **New Table** and create a table with the name `arraytest`. 1. Click **Save**. 1. Click **New Column** and create a column with the name `textarray`, type `text`, and select **Define as array**. 1. Click **Save**. ```sql CREATE TABLE arraytest (id integer NOT NULL, textarray text ARRAY); ``` ## Insert a record with an array value 1. Go to the [Table editor](https://app.supabase.com/project/_/editor) page in the Dashboard. 1. Select the `arraytest` table. 1. Click **Insert row** and add `["Harry", "Larry", "Moe"]`. 1. Click **Save.** ```sql INSERT INTO arraytest (id, textarray) VALUES (1, ARRAY['Harry', 'Larry', 'Moe']); ``` Insert a record from the JavaScript client: ```js const { data, error } = await supabase .from('arraytest') .insert([{ id: 2, textarray: ['one', 'two', 'three', 'four'] }]) ``` ## View the results 1. Go to the [Table editor](https://app.supabase.com/project/_/editor) page in the Dashboard. 1. Select the `arraytest` table. You should see: | id | textarray | | --- | ----------------------- | | 1 | ["Harry","Larry","Moe"] | ```sql SELECT * FROM arraytest; ``` You should see: | id | textarray | | --- | ----------------------- | | 1 | ["Harry","Larry","Moe"] | ## Query array data PostgreSQL uses 1-based indexing (e.g., `textarray[1]` is the first item in the array). To select the first item from the array and get the total length of the array: ```js SELECT textarray[1], array_length(textarray, 1) FROM arraytest; ``` returns: | textarray | array_length | | --------- | ------------ | | Harry | 3 | This returns the entire array field: ```js const { data, error } = await supabase.from('arraytest').select('textarray[]') console.log(JSON.stringify(data, null, 2)) ``` returns: ```js ;[ { textarray: ['Harry', 'Larry', 'Moe'], }, ] ``` ## Resources - [Supabase JS Client](https://github.com/supabase/supabase-js) - [Supabase Account - Free Tier OK](https://supabase.com) - [PostgreSQL Arrays](https://www.postgresql.org/docs/12/arrays.html)