“%”中没有字母'a','o'和'u'

时间:2014-01-21 13:12:58

标签: mysql sql regex

我有简单的SQL查询:

SELECT * FROM keys WHERE key LIKE ‘a%o%u’

但是我想只获得这些列,key首字母“a”,中心“o”,最后一个字母“u”AND,它们之间没有字母a,o和u。

6 个答案:

答案 0 :(得分:2)

SELECT * FROM keys WHERE `key` REGEXP 'a[^aou]*o[^aou]*u'

Regular expression visualization

答案 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'

为了帮助理解正则表达式,这里是解释和演示:

Regular expression visualization

Debuggex Demo

答案 3 :(得分:1)

我没有测试更多,但您可以轻松地使用您的数据进行测试

like 'a[^aou]%o%[^aou]%u'

答案 4 :(得分:0)

答案 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'。但我想你想要的应该转化为这个。 :)