2015-10-20 237 views
0

我想要做一个正则表达式搜索与SQLAlchemy的,像这样:SQLAlchemy的正则表达式与MySQL数据库使用 b

db.session.query(Users).filter(User.name.op('regexp')(r'\bJohn\b')).all() 

不过虽然我有用户在我的MySQL数据库名称为“约翰”,我没有得到任何结果回。

如果我从John在正则表达式查询两侧去除\b然后我得到用户如John Smith或只是John结果。然而,任何一方没有\b的问题意味着在他们的名字中会出现Johnson的人也会出现。

为什么使用\b不返回结果?谢谢。

+0

尝试'^约翰$',而不是单词边界 –

+0

@PruthviRaj但如果用户有一个字之前或之后,“约翰”它不会返回。 –

回答

1

这似乎是MySQL使用正则表达式的一个问题。除了使用\b word边界,[[:<:]][[:>:]],应采用像这样:

db.session.query(Users).filter(User.name.op('regexp')(r'[[:<:]]John[[:>:]]')).all()