Функция string_to_array() в PostgreSQL используется для разбиения строки на массив на основе указанного разделителя. Эта функция полезна для разбиения строки на ее компоненты и сохранения их как элементов массива.

Синтаксис – функция string_to_array() в PostgreSQL

string_to_array(string text, delimiter text)

string: Входная строка, которую необходимо разбить на массив.

delimiter: разделитель, используемый для разделения строки

Разделить строку на массив по запятой

SELECT string_to_array('Mercury,Venus,Earth,Mars', ',');

Объяснение:Разделяет строку ‘Mercury,Venus,Earth,Mars’ в массив с элементами ‘Mercury’、’Venus’、’Earth’、’Mars’

Результат:

Разделить строку на массив по пробелу

SELECT string_to_array('Hello PostgreSQL Enthusiast', ' ');

Объяснение:Разделяет строку«Hello PostgreSQL Enthusiast»в массив, где каждое слово разделено запятыми

Результат:

Разделить строку на массив по тире/дефису

SELECT string_to_array('20-AUG-2024', '-');

Объяснение:Разделяет строку’20-AUG-2024’в массив, где каждый элемент разделен тире или дефисом

Результат:

Разделить строку на массив по столбцу в PostgreSQL:

Вы можете использовать функцию string_to_array() для разделения значений столбца таблицы на массивы.

Давайте используем имя таблицы «orders_items».

Вы можете использовать функцию string_to_array(), чтобы разбить столбец корзины на массивы, как показано в коде ниже.

SELECT *, string_to_array(basket, ',') AS basket_array
FROM orders_items;

столбец корзины разбивается на массивы и сохраняется как новый столбец с именем «basket_array».

Результат:

Доступ к элементам массива в PostgreSQL:

После того, как у вас есть массив, вы можете получить доступ к его элементам, используя индексацию массива. Массивы PostgreSQL имеют индекс 1, то есть первый элемент имеет индекс 1.

Пример:Чтобы получить доступ к первому элементу массива, сначала преобразуйте столбец «корзина» из строки в массив, используя  string_to_array()функцию, а затем получить первый элемент, индексируя первый элемент

SELECT *, (string_to_array(basket, ','))[1] AS first_item
FROM orders_items;

Результат:

Пример:Доступ к последнему элементу массива. Сначала преобразуйте столбец «корзина» из строки в массив, используя  string_to_array()функцию, а затем получить последний элемент с помощью функции array_length(), как показано ниже

SELECT *, (string_to_array(basket, ',')) [array_length(string_to_array(basket, ','),1)] AS last_item FROM orders_items;

Результат:

Пример: подсчет количества предметов

Вы можете использовать функцию cardinality() для подсчета количества элементов в массиве. Сначала преобразуйте столбец «корзина» из строки в массив, используя  string_to_array()функцию, а затем подсчитать количество элементов в массиве, используяФункция cardinality(), как показано ниже

SELECT *, cardinality(string_to_array(basket, ',')) AS item_count
FROM orders_items;

Результат: