BigQuery хранится в цикле как массив

Я хочу, чтобы результат, который объединяет элементы, генерируемые циклом for, сохранялся в ARRAY или String

Вот мой код, который может генерировать список строк, которые я хочу, но я не знаю, как использовать этот список, так как я не могу сохранить его как массив или Concat.

FOR record IN (SELECT column_name FROM mytable where table_name = 'X')
DO
  SELECT FORMAT("(%s IS NULL OR TRIM(%s) = '')", record.column_name,record.column_name);
END FOR;

Я хочу использовать его для хранимой процедуры, как только он вызовет, он может генерировать строку, которая проверяет логическую базу на столбцах в таблице, которая анализирует параметр в созданной процедуре.

Подводить итоги, я хотел бы знать, как сохранить результат этого запроса в виде массива или строки

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете объявить переменную для хранения результата написанного вами скрипта. Я не уверен, что понял требование, но если вы просто хотите хранить отформатированные строки в виде массива, вам не нужно использовать цикл, и будет достаточно следующего запроса. После этого вы можете сослаться на переменную в своей хранимой процедуре.

DECLARE formats ARRAY<STRING>;

-- a temp table for the test
CREATE TEMP TABLE mytable AS
SELECT 'col1' AS column_name, 'X' AS table_name
 UNION ALL
SELECT 'col2' AS column_name, 'Y' AS table_name
 UNION ALL
SELECT 'col3' AS column_name, 'X' AS table_name
;

SET formats = (
  SELECT ARRAY_AGG(FORMAT("(%s IS NULL OR TRIM(%s) = '')", column_name, column_name)) 
    FROM mytable
   WHERE table_name = 'X'
);

SELECT formats;


--
output:
[(col3 IS NULL OR TRIM(col3) = ''), (col1 IS NULL OR TRIM(col1) = '')]

И приведенное выше условие можно записать по-другому.

(col3 IS NULL OR TRIM(col3) = '')

-->

IFNULL(col3, '') = ''

Последнему не нужен оператор OR и круглые скобки.

Другие вопросы по теме