【发布时间】:2018-02-13 10:08:23
【问题描述】:
在 django 中,要查询 JSONB,我会这样做:
cursor.execute("""\
SELECT * FROM "somemodel_some_model"
WHERE UPPER(("somemodel_some_model"."data"
#>> array[0,'fieldX'])::text[])
LIKE UPPER(% %s %)
""",[my_string])
.. 我得到:
IndexError: list index out of range
我知道以上不可能是真的,因为当我使用 ORM 来实现这一点时:
obj=Some_Model.objects.filter(data__0__fieldX__icontains=search_term)
.. 我得到了结果。 为了对此进行调查,我使用 SQL 并执行以下操作:
SELECT * FROM "somemodel_some_model"
WHERE UPPER(("somemodel_some_model"."data"
#>> array[0, 'fieldX'])::text[])
LIKE UPPER(%my_search_string%)
..但是,我明白了:
django.db.utils.ProgrammingError: "%" 处或附近的语法错误
所以,问题是,我需要转义 % 吗?看起来很奇怪
【问题讨论】:
标签: django postgresql