PostgreSql基于数组的搜索查询

时间:2018-01-16 04:44:12

标签: sql postgresql

我在表格中有一列我使用以下参数查询:

表:

Id    Billno. text[]
---------------------
 1      4545
 2      4545, 4546

当我查询4545时,它必须返回两行。

我正在使用以下查询,但它只返回一行,即4545

pool.query(' SELECT "Billno" FROM "table" '+
' where "Billno" @> $1 ',[billNo])

billNo = [4545, 3456] - >它可以是任何数组。但是,如果数据库中有任何数字,则必须将其返回

1 个答案:

答案 0 :(得分:0)

尝试将参数显式转换为ARRAY数据类型:

pool.query(' SELECT "Billno" FROM "table" '+
' where "Billno" @> ARRAY[$1] ',[billNo])

http://www.sqlfiddle.com/#!17/701f7/4

此外,Billno字段是字符串数组吗?如果要存储数值,为什么不使用整数数组?

<强>更新
如果要返回参数化数组值中包含任何值的所有数组,请尝试重叠(&amp;&amp;)运算符:

pool.query(' SELECT "Billno" FROM "table" '+
' where "Billno" && ARRAY[$1] ',[billNo])