繁体   English   中英

Mysql LIKE 第二个字符和倒数第二个字符都是'm'

[英]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_';

使用ORLIKE确实可以捕获任何至少包含 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM