用特殊的MySQL运算符获得更多数据比较功能
http://tech.ddvip.com 2007年11月13日 社区交流
内容摘要:如果你在最近进行过SELECT或UPDATE查询,那么你很可能用到过一个或者多个MySQL的比较运算符来限制查询的输出结果。比较是大多数SELECT查询不可分割的一部分,而MySQL为这一功能提供了很多函数;根据最近一次统计,它有超过20个这样的运算符和函数,从著名的=和LIKE到更加难懂的NOT IN和STRCMP()。
+--------------------------------------+
| INTERVAL (24, 5, 10, 15, 20, 25, 30) |
+--------------------------------------+
| 4 |
+--------------------------------------+
1 row in set (0.07 sec)
在这个例子中,24比25(索引位置4)小,但是比20(索引位置3)大,因此它的INTERVAL是4。
STRCMP
STRCMP()函数是MySQL里比较字符串的最简单方式之一。这个函数接受两个参数——要被比较的字符串。如果这个两个字符串相同,它就返回0;如果第一个大于第二个,它就返回1;如果第一个小于第二个,它就返回-1。比较的结果完全依赖当前使用时的字符集。下面就是几个例子:
mysql> SELECT STRCMP('hell', 'hell');
+------------------------+
| STRCMP('hell', 'hell') |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.00 sec)mysql> SELECT STRCMP('bell', 'hell');
+------------------------+
| STRCMP('bell', 'hell') |
+------------------------+
| -1 |
+------------------------+
1 row in set (0.00 sec)
REGEXP
要进行更加复杂的字符串比较,REGEXP函数常常要比用滥了的LIKE语句更加强大。这个函数会把一个表达式与一个正则表达式模式进行比较,如果找到匹配的,它就返回布尔值——真。下面是这样一个例子:
mysql> SELECT 'The Matrix' REGEXP '[u-z]$';
+------------------------------+
| 'The Matrix' REGEXP '[u-z]$' |
+------------------------------+
| 1 |
+------------------------------+
1 row in set (0.00 sec)
DATEDIFF
正如其名字所表示的,DATEDIFF()函数是一个快速获得两个日期之间天数的工具。这对于计算到某个事件发生时的天数,或者在给定某人的生日时计算他/她的年龄很有用。
mysql> SELECT DATEDIFF(20060101, 20051201);
+------------------------------+
| DATEDIFF(20060101, 20051201) |
+------------------------------+
| 31 |
+------------------------------+
1 row in set (0.00 sec)
DATEDIFF()通常与NOW()函数一起使用——例如,计算今天到过去或者未来任意一天之间的天数。下面就是一个例子:
mysql> SELECT DATEDIFF(NOW(), 20060203);
+---------------------------+
| DATEDIFF(NOW(), 20060203) |
+---------------------------+
| 176 |
+---------------------------+
1 row in set (0.00 sec)
以上就是本文的内容。要记住的是,你可以在MySQL手册里发现更多关于这些函数的信息。玩得高兴!
责编:豆豆技术应用