【问题标题】:Postgres String Array ComparisonPostgres 字符串数组比较
【发布时间】:2020-06-22 04:21:25
【问题描述】:

我有一个表单数组:

myArray = ["1234-56", "1234-567"]

我的表有一个列,它的构造与数组完全一样,由一个字符串数组组成,我们称之为列:myColumn。

我想输出数组的一个或多个值匹配的行。

我目前的尝试如下:

SELECT *
FROM myTable
WHERE myColumn && myArray;

但这以以下错误消息结束:

ERROR: Column "56" does not exist.

【问题讨论】:

  • 您似乎没有从代码中正确传递数组常量。你在用什么?爪哇? C++? C#?请edit您的问题并添加运行您的查询的代码。
  • 数组来自 JavaScript。上面是运行我的查询的代码。

标签: arrays postgresql


【解决方案1】:

双引号中的字符串是 SQL 中的“标识符”,即表、列、函数或其他对象的名称。

所以当你写的时候

SELECT * FROM mytable
WHERE mycolumn && ARRAY["56","95"];

PostgreSQL 会将 "56" 识别为列名(在该上下文中它不可能是表),并且它抱怨表 mytable 没有名为 56 的列。

解决方法是将56标记为字符串字面量,即用单引号括起来:

SELECT * FROM mytable
WHERE mycolumn && ARRAY['56','95'];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2021-05-16
    相关资源
    最近更新 更多