SQL Alchemy喜欢/ regex查询零个或多个字符

时间:2014-09-22 13:11:19

标签: mysql sql regex flask sqlalchemy

我在行中有字符串,具有以下模式。

1) '"foo": [a, b, c]'
2) '"foo": [aa, c]'
3) '"foo": [aaaa]'
4) '"foo": [b, c, a]'
5) '"foo": [ba, ca, a1234aaa]'

我需要找到具有字符a和only且仅包含字符a(不是aa或aaaa)的行数。 [答案是2排。行数1和行数4]

逻辑:前面有零或一个[空格]且以零或一个[逗号]结尾的字符

我做了:

likestr = '"foo": [%a%]'
query = db.session.query(X).filter(X.Y.like('%'+likestr+'%'))    

显然,这会将count返回为4,而正确的答案是2我的查询在正则表达式中会如何显示?

1 个答案:

答案 0 :(得分:1)

这很简单,没有正则表达式。以下内容可行(SQL Fiddle):

SELECT * 
FROM MyTable
WHERE MyField like '%[a,%' 
   OR MyField like '%, a,%' 
   OR MyField like '%, a]%' 

或者,如果你想要正则表达式(SQL Fiddle):

SELECT * 
FROM MyTable
WHERE MyField REGEXP '\\[a, |, a,|, a\\]';