例如,如果我有一个JSONB列,并将其存储为:
["oranges","apples","bananas"]
如何使用LIKE类型搜索检查子字符串“ app”是否在列表中?
理想情况下,我希望能够执行以下操作:
Basket['fruits'].contains_like('%app%')
sqlalchemy是否可能?
答案 0 :(得分:0)
利用纯PostgreSQL答案here的启发,您可以创建以下条件:
from sqlalchemy import exists, func, literal_column
exists().select_from(
func.jsonb_array_elements_text(Basket['fruits']).alias('fruit')
).where(literal_column('fruit').like('%app%'))
答案提出了性能问题,并可能在特殊情况下(当您仅对以某个值开头的字符串感兴趣时)添加索引。看看是否适用于您以及是否遇到性能问题