2015-10-20 53 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()