栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

运算符不存在:使用ANY的查询中的integer = integer []

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

运算符不存在:使用ANY的查询中的integer = integer []

根据错误消息部分

operator does not exist: integer =integer[]
,似乎需要对该
bs
列进行
unnest
编辑,以便使右侧回到,
integer
从而可以找到比较运算符:

WITH bar AS (  SELECt array_agg(b) AS bs  FROM foo  WHERe c < 3)SELECt aFROM fooWHERe b = ANY ( SELECt unnest(bs) FROM bar);

结果为输出:

A23

给定ANY函数的文档:

右侧是带括号的子查询,该查询必须恰好返回一列。使用给定的运算符,将评估左侧表达式并将其与子查询结果的每一行进行比较,该运算符必须产生布尔结果。如果获得任何真实结果,则ANY的结果为“
true”。如果找不到正确的结果,则结果为“ false”(包括子查询不返回任何行的情况)。

…该错误是有道理的,因为左侧表达式是

integer
-列
b
-而右侧表达式是
integer
s或or的数组
integer[]
,因此比较最终以
integer
=的形式结束
integer[]

t具有运算符,因此会导致错误。

unnest
将该
integer[]
值设为左手表达式
integer
和右手表达式,因此可以继续进行比较。

修改后的SQL Fiddle。

注意: 使用

IN
代替时会看到相同的行为
= ANY



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431617.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号