![](/img/trans.png)
[英]Case-insensitive search on a postgres ArrayField with django
[英]Case Insensitive search with POstgres Similar To
我的 Django 代码中有这样的查询
cond = self.text_query(field.id, f'''
EXISTS(
SELECT *
FROM {self.fieldvalue_db_view}
WHERE entry_id = {self.db_table}.id AND
{self.fieldvalue_db_view}.field_id = {field.id} AND
{self.fieldvalue_db_view}.{text_search_column} SIMILAR TO %(pattern)s
)
''', dict(pattern='%' + val + '%'))
什么时候
val = '%%john smith%%' or val = '%%john%smith%%'
它没有返回像 'John smith' 这样的结果,但如果
val = '%%john%smith%|%smith%john%%'
它返回带有“John smith”的结果。
如何解决这种区分大小写的问题?
谢谢,
你可以使用ilike
:
EXISTS(
SELECT
1
FROM
{ self.fieldvalue_db_view }
WHERE
entry_id = { self.db_table }.id
AND { self.fieldvalue_db_view }.field_id = { field.id }
AND { self.fieldvalue_db_view }.{ text_search_column } ILIKE %(pattern) s
)
当您检查行是否存在时,您也不需要返回所有列,而是传递一个更便宜的常量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.