我有简单的SQL查询:“%”,这不会有字母“A”的“u”,“O”,它
SELECT * FROM keys WHERE key LIKE ‘a%o%u’
但我想仅此列,其中key
有第一个字母“a”,居中“o”,最后一个字母“u”,并且他们之间没有字母a,o和u。
我有简单的SQL查询:“%”,这不会有字母“A”的“u”,“O”,它
SELECT * FROM keys WHERE key LIKE ‘a%o%u’
但我想仅此列,其中key
有第一个字母“a”,居中“o”,最后一个字母“u”,并且他们之间没有字母a,o和u。
也许这个模式匹配的网页会帮助你吗?
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
这是否也适用于MySQL? –
对不起。我不确定。我只看到了SQL,因此我假设了MS SQL:S – NickyvV
使用RLIKE。我目前正在使用手机,因此无法发布完整答案。你可以查阅mysql手册来获取RLIKE/REGEXP。
尝试......
SELECT * FROM WHERE键(按键LIKE '百分比' 或关键LIKE '%0%' 或关键LIKE '%U')和(关键NOT LIKE“%A% 'AND key not like'%o%'and key not LIKE'%u%');
该声明对我来说没有多大意义,特别是字母'o'的条件。第一种情况表示'o'应该在中心,然后第二种情况表示在两者之间没有'o'。但我想你想要的应该转化为此。 :)
你真正在这里寻找的是一个正则表达式。谢天谢地,这可以做到。请看下面的表达式为您的需求:
a([^aou]*[o]{1}[^aou]*)?u
这只是需要被添加到WHERE
条款:
SELECT * FROM keys WHERE `key` REGEXP 'a([^au]*[o]{1})*u'
并帮助理解正则表达式,这里的说明和演示:
有了这个“au”就可以了。在o和u之间不可能有字符。 – fancyPants
@fancyPants,更具体请给我一个例子,打破它,我会得到它的修改。 –
就像我说的,“au”打破了它,因为那里必须有一个“o”。最小的字符串是“aou”。另一个例子,“哎哟”是不可能的。 – fancyPants
我没有测试更多,但是你可以很容易与您的数据
like 'a[^aou]%o%[^aou]%u'
我认为应该有“%”之后,“[^ aou]” – Piotrek
谁上传呢? LIKE不支持除%和_之外的任何通配符。 – fancyPants
SELECT * FROM keys WHERE `key` REGEXP 'a[^aou]*o[^aou]*u'
真棒图片,我从来没有见过它。 (我刚刚在debuggex上注册) – Melon
我在PHPMyAdmin启动它时得到这个“#1139 - 从正则表达式” – Piotrek
@ Ludwik11得到错误'重复运算符操作数无效'更正了它,请重试。 – fancyPants
测试当你看到O需求是在中心,你的意思是中心,或随便找个地方之间(无论哪种方式,我猜你需要一个正则表达式)? –
使用正则表达式。 REGEX大师将能够告诉你哪一个。 – Strawberry
http://stackoverflow.com/questions/2821419/regular-expression-starting-and-ending-with-a-letter-accepting-only-letters – Hituptony