【问题标题】:JavaScript Array Comparison in PostgreSQLPostgreSQL 中的 JavaScript 数组比较
【发布时间】:2020-10-04 17:46:24
【问题描述】:

我在 JavaScript 中创建了一个具有以下形式的数组: [1,2,3,4]
我可以通过 PostgreSql 中的{{{myArray}} 访问这个数组。
在 Postgre 中,我在数据库中有一个表,其中一列与我相关,其结构如下:

[100,22]
[20,22]
[33,12]
.
.

我想检查该列是否包含 myarray 的任何元素,如果是,我想用 select 语句显示它。

一个例子是:

myArray = [100,120,33]
column = [[100,22] , [20,22] ,[33,12]]

[Output]: [[100,22],[33,12]]

我之前尝试过执行这个命令:
SELECT * FROM myDatabase WHERE 'interestedColumn' in unnest{{myArray});

但看起来 Postgre 扰乱了我从 JS 获得的数组的形状。

【问题讨论】:

  • unnesst{{myArray}) 是语法错误。你到底写了什么?
  • 请发布您正在从中选择的myDatabase 表的 DDL。
  • {{myArray}}} 仅适用于我的环境,它是一个完整的 postgre 环境,其中包含更多不存在但已实现的元素但是您可以将 {{{myArray}} 替换为数组本身来测试整个事情。
  • @Bergi 我编辑了问题并更改了顶部的数组,谢谢
  • 这个环境是什么?现在我很好奇!但我怀疑它不需要匹配的括号或定义自定义 unnesst 关键字(而不是 unnest)。

标签: javascript json postgresql


【解决方案1】:

你似乎在寻找array overlap operator &&

SELECT *
FROM myDatabase
WHERE 'interestedColumn' && ({{myArray}});

【讨论】:

  • @sd3v 我们只能帮助使用 Postgres SQL 语法或使用特定库(如 node-postgres 和参数化查询等)。我仍然不知道您的 {{myArray}} 语法是做什么的。
【解决方案2】:

IN postgresql 操作符的写法如下:value IN (value1, value2, ...) 您必须将数组 [10,12,12312] 转换为字符串,例如 (10, 12, ...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多