我该如何在Django中查询全名?
为了澄清,我想创建一个临时列,将first_name和last_name组合成fullname,然后在这个fullname上执行LIKE操作,像这样:
select [fields] from Users where CONCAT(first_name, ' ', last_name) LIKE '%John Smith%";
上述查询将返回所有名为John Smith的用户。如果可能,我想避免使用原始的 SQL 调用。
我要谈论的模型是特定的django.contrib.auth.models User模型。直接对模型进行更改不是问题。
例如,如果用户搜索'John Paul Smith',它应该匹配名字为'John Paul'和姓氏为'Smith'的用户,以及名字为'John'和姓氏为'Paul Smith'的用户。
CONCAT(first_name, ' ', last_name) LIKE '%John Smith%"
这种写法非常低效吗?使用first_name LIKE '%John' AND last_name LIKE 'Smith%'
可以更高效。既然有非 CONCAT 的方法,为什么还要使用 CONCAT 呢? - S.LottCONCAT
函数绝对依赖空格。你怎么突然不再依赖空格了呢?SQL 的哪部分不能准确反映您的要求? - S.Lott