sql查询不以某些指定字符开头(正则表达式)

48 阅读1分钟

​ 我们用到的最多的是:查询以特定字符或字符串开头的记录

字符^用来匹配以特定字符或字符串开头的记录。

例 1

在 tb_students_info 表中,查询 name 字段以“J”开头的记录,SQL 语句和执行过程如下。

mysql> SELECT * FROM tb_students_info -> WHERE name REGEXP '^J'; +----+------+------+------+--------+-----------+ | id | name | age | sex | height | course_id | +----+------+------+------+--------+-----------+ | 4 | Jane | 22 | 男 | 162 | 3 | | 5 | Jim | 24 | 女 | 175 | 2 | | 6 | John | 21 | 女 | 172 | 4 | +----+------+------+------+--------+-----------+ 3 rows in set (0.01 sec) 或者可以使用like:

mysql> SELECT * FROM tb_students_info -> WHERE name like 'J%'; +----+------+------+------+--------+-----------+ | id | name | age | sex | height | course_id | +----+------+------+------+--------+-----------+ | 4 | Jane | 22 | 男 | 162 | 3 | | 5 | Jim | 24 | 女 | 175 | 2 | | 6 | John | 21 | 女 | 172 | 4 | +----+------+------+------+--------+-----------+ 3 rows in set (0.01 sec) 查询不以某些指定字符开头,反查的这种,可以这样解决:

例如:查询item_description不以AUT-、IND、AUTA-、AUTB-、AUTC-、AEBU-、CON-、WDR-、WDF-开头,并且不包含ICON的所有数据 select * from table_name where item_description not REGEXP ('^(AUT-)|(^IND)|^(AUTA-)|^(AUTB-)|(^AUTC)|^(AEBU-)|^(CON-)|^(WDR-)|^(WDF-)') and item_description not like '%ICON%'; ​