まったく同じフォーマット「1,2,3,4;5,6,7,8」でデータを保持する2つの列(c1、c2)を持つテーブル「my_table」があります。regexp_split_to_tableを使用してそれらを行に分割します。空でない行を選択しようとしています。
SELECT * from
(SELECT '1' as param1 ,'2' as param2, param3 FROM
((select regexp_split_to_table(my_table.c1, ';') as param3
FROM my_table)
UNION
(select regexp_split_to_table(my_table.c2, ';') as param3
FROM my_table)) AS a) as b
where param3 is not null
このクエリを実行すると、次のエラーが発生します。
set-valued function called in context that cannot accept a set
ユニオンを削除して列の 1 つからのみ選択するか、他のフィールド (param1/param2) のいずれかでフィルター処理すると、クエリは機能します。データに問題があるのではないかと思ったので、同じ列から 2 回選択してみました。
SELECT * from
(SELECT '1' as param1 ,'2' as param2, param3 FROM
((select regexp_split_to_table(my_table.c1, ';') as param3
FROM my_table)
UNION
(select regexp_split_to_table(my_table.c1, ';') as param3
FROM my_table)) AS a) as b
where param3 is not null
それでも同じエラーが発生します。誰もこれを解決する方法を知っていますか? ありがとう!