SQL语句中的LIKE模式

时间:2014-07-25 10:13:47

标签: mysql sql

我想选择所有以任何字符开头的行。

SELECT * FROM table WHERE field LIKE '[a-z]%' ;

我想要找到的行类型如下:

ID  DATA

993 DEF055900960

994 DEF055900961

995 DEF055900964

996 DEF056102254

997 DEF056131201

我没有尝试过RLIKE和REGEXP,并且还添加了大写A-Z模式。

为什么以下不起作用?

4 个答案:

答案 0 :(得分:2)

SELECT * FROM table WHERE field RLIKE '[a-z]' ;

SQL Fiddle Demo

我在这里阅读了Pattern Matching in Mysql

答案 1 :(得分:0)

请改为尝试:

SELECT * FROM table WHERE field LIKE '[^A-Z]%';

答案 2 :(得分:0)

使用REGEXP

http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp

例如,假设我们有这个数据集。

mysql> select * from a;
+------+
| b    |
+------+
| abc  |
| zxxb |
| kkfy |
| 0002 |
+------+
4 rows in set

我们希望用a-z模式选择所有内容

mysql> SELECT * FROM a WHERE b REGEXP BINARY '[a-z]';
+------+
| b    |
+------+
| abc  |
| zxxb |
| kkfy |
+------+
3 rows in set

SQLFiddle

对于您的数据集

SQLFiddle

使用正则表达式[a-zA-Z0-9]

mysql> SELECT * FROM a WHERE b REGEXP BINARY '[a-zA-Z0-9]';
+--------------+
| b            |
+--------------+
| DEF055900960 |
| DEF055900961 |
| DEF055900964 |
| DEF056102254 |
| DEF056131201 |
+--------------+
5 rows in set

答案 3 :(得分:0)

试试这个。

SELECT `firstname`
FROM `users`
WHERE firstname
REGEXP BINARY '^[A-Z]'