我有简单的SQL查询:
SELECT * FROM keys WHERE key LIKE ‘a%o%u’
但是我想只获得这些列,key
首字母“a”,中心“o”,最后一个字母“u”AND,它们之间没有字母a,o和u。
答案 0 :(得分:2)
SELECT * FROM keys WHERE `key` REGEXP 'a[^aou]*o[^aou]*u'
答案 1 :(得分:1)
使用RLIKE。我目前正在使用手机,因此无法发布完整的答案。你可以查看RLIKE / REGEXP的mysql手册。
答案 2 :(得分:1)
你真正想要的是一个正则表达式。谢天谢地,这可以做到。请根据您的需要考虑以下表达式:
a([^aou]*[o]{1}[^aou]*)?u
只需要添加到WHERE
子句:
SELECT * FROM keys WHERE `key` REGEXP 'a([^au]*[o]{1})*u'
为了帮助理解正则表达式,这里是解释和演示:
答案 3 :(得分:1)
我没有测试更多,但您可以轻松地使用您的数据进行测试
like 'a[^aou]%o%[^aou]%u'
答案 4 :(得分:0)
也许这个带有模式匹配的页面可以帮到你?
http://technet.microsoft.com/en-us/library/ms187489(v=sql.105).aspx
MySQL的: http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
答案 5 :(得分:0)
试试这个......
SELECT * FROM keys WHERE(key LIKE'a%'或key LIKE'%o%'或key LIKE'%u')和(key NOT LIKE'%a%'和key NOT LIKE'%o%' AND key NOT LIKE'%u%');
这句话对我来说没有多大意义,特别是字母“o”的条件。第一个条件是'o'应该在中心,然后第二个条件说中间没有'o'。但我想你想要的应该转化为这个。 :)