我想知道如何在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)
...但是没人能工作。
答案 0 :(得分:0)
可能有点晚了,但我会这样:
...
`c.col1 = ANY(string_to_array($3,$4))`,
[
start, end,
[1,2,3].join(SEP), SEP
]
...
必须确保SEP
字符串不在[1,2,3]数组的任何项目中。