Postgresql 检查Postgres json数组是否与另一个数组相交

Postgresql 检查Postgres json数组是否与另一个数组相交,postgresql,sqlalchemy,Postgresql,Sqlalchemy,是否有一个postgres jsonb操作符来检查一组元素中的任何一个元素是否在另一组元素中 例如: if ['a', 'b', 'c'] in ['c', 'd', 'e'] = True because c in 2nd set if ['f', 'g', 'h'] in ['g', 'h', 'i'] = True because of g and h in 2nd set 您可以使用扩展JSON数组,或者直接使用jsonb_数组_元素_文本(当使用jsonb时)或JSON_数组_元素_

是否有一个postgres jsonb操作符来检查一组元素中的任何一个元素是否在另一组元素中

例如:

if ['a', 'b', 'c'] in ['c', 'd', 'e'] = True because c in 2nd set
if ['f', 'g', 'h'] in ['g', 'h', 'i'] = True because of g and h in 2nd set

您可以使用扩展JSON数组,或者直接使用
jsonb_数组_元素_文本
(当使用
jsonb
时)或
JSON_数组_元素_文本
(当使用
JSON
时)扩展为文本,然后使用将它们转换为PostgreSQL数组

这产生了以下结果:

        x        |        y        |  xarr   |  yarr   | with_intersection
-----------------+-----------------+---------+---------+-------------------
 ["a", "b", "c"] | ["c", "d", "e"] | {a,b,c} | {c,d,e} | t
 ["a", "b", "c"] | ["g", "h", "i"] | {a,b,c} | {g,h,i} | f
(2 rows)

您可以使用扩展JSON数组,或者直接使用
jsonb_数组_元素_文本
(当使用
jsonb
时)或
JSON_数组_元素_文本
(当使用
JSON
时)扩展为文本,然后使用将它们转换为PostgreSQL数组

这产生了以下结果:

        x        |        y        |  xarr   |  yarr   | with_intersection
-----------------+-----------------+---------+---------+-------------------
 ["a", "b", "c"] | ["c", "d", "e"] | {a,b,c} | {c,d,e} | t
 ["a", "b", "c"] | ["g", "h", "i"] | {a,b,c} | {g,h,i} | f
(2 rows)

这对于原生Postgres数组来说是非常容易的。我想你提到的其他问题之一应该已经是PostgreSQL数组了。这个问题中的伪代码不清楚两个数组是否都是
jsonb
类型,或者其中一个是否已经作为
text[]
提供。(我假设是前者)我将列定义为jsoni类型如果您将另一端指定为数组,那么这确实是@IljaEverilä链接的问题的重复。(不清楚为什么它是连接条件的一部分会产生不同,或者为什么MongoDB在这里更好,这取决于您。)使用本机Postgres数组很容易做到这一点。Prolly回答为和@IljaEverilä我猜您指出的其他问题是希望其中一方已经是PostgreSQL数组。这个问题中的伪代码不清楚两个数组是否都是
jsonb
类型,或者其中一个是否已经作为
text[]
提供。(我假设是前者)我将列定义为jsoni类型如果您将另一端指定为数组,那么这确实是@IljaEverilä链接的问题的重复。(不清楚为什么作为连接条件的一部分会产生不同,或者为什么MongoDB在这里更好,这取决于您。)