如何在 Django ORM 中对单个字符替换 (_) 进行通配符搜索?
How to do wildcard search for single character replacement ( _ ) in Django ORM?
我有一个案例需要使用 Django ORM 进行通配符搜索。
我有一列 - column1
,其中包含手机号码。
我需要对 MySQL
中的 _
中的单个字符替换进行通配符搜索。
我可以做到 Mobilenumbers.objects.raw('SELECT * FROM MOBILENUMBERS WHERE COLUMN1 LIKE '98765_7644')
。但是我如何在 Django ORM 中做同样的事情。
这是不是Wildcard searching in Django的副本。
您可以使用 __regex
lookup [Django-doc],例如:
Mobilenumbers.objects.filter(
<b>column1__regex=r'^98765.7644$'</b>
)
您甚至可以进一步限制它只允许数字作为通配符:
Mobilenumbers.objects.filter(
column1__regex=r'^98765<b>\d</b>7644$'
)
^
和$
分别是开始和结束锚点指定字符串以987...
开始,以987...
结束...644
.
\d
只匹配数字。所以这意味着最后一个正则表达式会匹配 9876547644
,但不会匹配 98765a7644
.
我有一个案例需要使用 Django ORM 进行通配符搜索。
我有一列 - column1
,其中包含手机号码。
我需要对 MySQL
中的 _
中的单个字符替换进行通配符搜索。
我可以做到 Mobilenumbers.objects.raw('SELECT * FROM MOBILENUMBERS WHERE COLUMN1 LIKE '98765_7644')
。但是我如何在 Django ORM 中做同样的事情。
这是不是Wildcard searching in Django的副本。
您可以使用 __regex
lookup [Django-doc],例如:
Mobilenumbers.objects.filter(
<b>column1__regex=r'^98765.7644$'</b>
)
您甚至可以进一步限制它只允许数字作为通配符:
Mobilenumbers.objects.filter(
column1__regex=r'^98765<b>\d</b>7644$'
)
^
和$
分别是开始和结束锚点指定字符串以987...
开始,以987...
结束...644
.
\d
只匹配数字。所以这意味着最后一个正则表达式会匹配 9876547644
,但不会匹配 .98765a7644