- $comparison = "(SELECT COALESCE(string_agg(num, ','), '') FROM (
- $subselect
- ) AS x) = '$num'";
+
+ my @num = split(/\s*,\s*/, $num);
+
+ #$comparison = "(SELECT COALESCE(string_agg(num, ','), '') FROM ( #Pg 9-ism
+ $comparison = "(SELECT COALESCE(array_to_string(array_agg(num), ','), '')
+ FROM ($subselect) AS x
+ ) = '". join(',', grep $_, @num). "'";
+
+ $comparison = "( $comparison OR NOT EXISTS ($subselect) )"
+ if grep !$_, @num;
+