[英]Mysql LIKE 2nd character and 2nd last character both are 'm'
我尝试查找查询以查找第二个字符和倒数第二个字符都是字母 m 的字符串。
SELECT last_name
FROM employees
WHERE (last_name LIKE '_m%m_' AND LENGTH(last_name) >= '3');
提前致谢:)
为什么不只是OR
而不是AND
? 当您的LIKE
运算符已经排除了三个字符以下的名称时,我看不到AND
的意义。 您不需要使用正则表达式,也不需要检查长度:
SELECT last_name FROM employees
WHERE last_name LIKE '_m_'
OR last_name LIKE '_m%m_';
使用OR
和LIKE
确实可以捕获任何至少包含 3 个字符的字符串。
如果您必须使用正则表达式,请尝试REGEXP
运算符:
SELECT last_name FROM employees WHERE last_name REGEXP '^.m(.*m)?.$';
模式意味着:
^.m
- 具有单个字符和文字“m”的起始行锚;(.*m)?
- 可选的捕获组以匹配 0+ 个字符到文字“m”;.$
- 带有结束行锚的单个字符。 REGEXP
的好处是,如果您需要使用模式进行不区分大小写的匹配,它会更简洁一些: '^.[Mm](.*[Mm])?.$'
。 查看在线演示。
如果您需要第二个和最后一个字符为m的所有记录,您可以使用以下查询:
select * from <table> where <column> like '_m%m'
查询中的_
是一个字符的占位符,而%
是多个字符的占位符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.