使用 [charlist] 通配符的 mysql 语句

标签 mysql

尝试使用此sql语句。前两个部分工作正常,我正在尝试在公司字符列表中,以便其拉动的字符串不能包含其中的任何字母

SELECT * FROM table WHERE LENGTH(RTRIM(word)) = 8 AND word LIKE 'a__c____' AND word LIKE '%[!tesp]%' GROUP BY word

基本上,我希望这个语句能够提取出一个词:

  • 长度为 8 个字母
  • 以“a”开头,第四个字母是“c”
  • 其中不包含“t”“e”“s”“p”

最佳答案

使用REGEXP (或其同义词RLIKE)运算符。

SELECT *
FROM table
WHERE word RLIKE '^a[^tesp]{2}c[^tesp]{4} *$'
GROUP BY word;

[^tesp]{2} 表示“匹配 2 个非 t、e、s 或 p 的字符”。

请注意,8 个字母是由正则表达式强制执行的。此外,它还通过正则表达式末尾的 *$ 处理 RTRIM(允许末尾有任意数量的空格)。

这样您只需对每个单词执行一次而不是三次(一次针对 LENGTH,一次针对 LIKE 'a__c____',一次针对“t”,” e","s","p")。

关于使用 [charlist] 通配符的 mysql 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8937050/

相关文章:

mysql - 表中具有相同值的其他行的计数

php - 制作一个从MySQL中选择的功能,我的怎么样?

来自 pid 文件/var/run/mysqld/mysqld.pid 的 mysqld_safe mysqld 防止服务器重启

mysql - 触发 SQL Prestashop

java - PreparedStatement 批处理的性能不如普通 Statement

Mysql 文本存储?

php - 为什么我在mysql中输入数据时会出现闪烁?

c++ - 在 C++ QT 上执行 sql 后应用程序崩溃

java - Hibernate JPA create table type=InnoDB 问题

php - 更新前检查列是否为零