Postgresql 检查Postgres json数组是否与另一个数组相交
是否有一个postgres jsonb操作符来检查一组元素中的任何一个元素是否在另一组元素中 例如: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_数组_元素_
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在这里更好,这取决于您。)