获取大于'x'的所有值

时间:2014-04-13 11:00:45

标签: mysql sql

我有以下内容:

create table words (value varchar(10));
insert into words values('bbbbb');
insert into words values('ccccc');

如果现在我查询select * from words where value > 'b%';我得到:

+-------+
| value |
+-------+
| bbbbb |
| ccccc |
+-------+

问题是:如何让value列值大于b的所有元组?

我的意思是我想让所有元组的value列的值按照字母顺序从c到z开始。

3 个答案:

答案 0 :(得分:2)

尝试

WHERE value  REGEXP '^[c-z]'

答案 1 :(得分:2)

这将是一个有效的解决方案(可能比正则表达式更有效):

WHERE left(value,1) > 'b' AND left(value,1) <= 'z'

请注意,这只会处理小写字母,它可能无法使用大写字母,对于它们,您可能需要添加更多条件

答案 2 :(得分:1)

>运算符比较lexicographical order中的字符串,请参阅以下示例:

mysql> SELECT 'a' > 'b', 'b' > 'a', 'ab' > 'aaa', 'ab' > 'b';
+-----------+-----------+--------------+------------+
| 'a' > 'b' | 'b' > 'a' | 'ab' > 'aaa' | 'ab' > 'b' |
+-----------+-----------+--------------+------------+
|         0 |         1 |            1 |          0 |
+-----------+-----------+--------------+------------+
1 row in set (0.00 sec)

如果您正在寻找模式匹配,则应使用like或正则表达式。检查示例:

12.5.1 String Comparison Functions

mysql> SELECT  'bbbbb' like 'b%', 'cccc' like 'b%';
+-------------------+------------------+
| 'bbbbb' like 'b%' | 'cccc' like 'b%' |
+-------------------+------------------+
|                 1 |                0 |
+-------------------+------------------+
1 row in set (0.00 sec)

12.5.2 Regular Expressions

mysql> SELECT 'bbbb' REGEXP 'b.*', 'cccc' REGEXP 'b.*';
+---------------------+---------------------+
| 'bbbb' REGEXP 'b.*' | 'cccc' REGEXP 'b.*' |
+---------------------+---------------------+
|                   1 |                   0 |
+---------------------+---------------------+
1 row in set (0.00 sec)