如何将数组解构为POSTGRES参数?

时间:2019-01-13 18:13:39

标签: node.js database postgresql typeorm

我想知道如何在TypeORM或POSTGRESQL原始查询中解构数组变量。

我有以下查询:

getConnection()
        .query(`SELECT m.col1, m.col2, m.col3, t.col1, c.col1
                FROM schema.msomething m
                LEFT JOIN schema.csomething c ON m.col1 = c.col1
                LEFT JOIN schema.tsomething t ON m.col1 = t.col1
                WHERE ((m.start_date, m.end_date) OVERLAPS ($1, $2))
                AND (c.col1 IN ('valueA', 'valueB', 'valueC'))`,
                [
                    start_date,
                    end_date
                ]
        );

此查询按预期工作正常,但是我希望('valueA', 'valueB', 'valueC')成为分配给$3的动态值,该值将是 Array

我尝试了以下操作:

AND (c.col1 IN (...$3))

AND (c.col1 IN $3)

...但是没人能工作。

1 个答案:

答案 0 :(得分:0)

可能有点晚了,但我会这样:

...
`c.col1 = ANY(string_to_array($3,$4))`,
[
  start, end,
  [1,2,3].join(SEP), SEP
]
...

必须确保SEP字符串不在[1,2,3]数组的任何项目中。