|
用于SELECT和WHERE子句的SQL函数
|
|
来源:网络 作者:本站整理 发布时间:2007-06-18
|
|
mysql> SELECT SIN(PI()); -> 0.000000
TAN(X) 返回 X 的正切,在这里,X 以弧度给出:
mysql> SELECT TAN(PI()+1); -> 1.557408
ACOS(X) 返回 X 的反余弦,更确切地说,返回余弦值为 X 的值。如果 X 不在 -1 到 1 之间的范围内,返回 NULL:
mysql> SELECT ACOS(1); -> 0.000000 mysql> SELECT ACOS(1.0001); -> NULL mysql> SELECT ACOS(0); -> 1.570796
ASIN(X) 返回 X 的反正弦,更确切地说,返回正弦值为 X 的值。如果 X 不在 -1 到 1 之间的范围内,返回 NULL:
mysql> SELECT ASIN(0.2); -> 0.201358 mysql> SELECT ASIN('foo'); -> 0.000000
ATAN(X) 返回 X 的反正切, 更确切地说,返回正切值为 X 的值:
mysql> SELECT ATAN(2); -> 1.107149 mysql> SELECT ATAN(-2); -> -1.107149
ATAN(Y,X) ATAN2(Y,X) 返回两个变量 X 和 Y 的反正切。它类似于计算 Y / X 的反正切,除了两个参数的符号用于决定结果的象限:
mysql> SELECT ATAN(-2,2); -> -0.785398 mysql> SELECT ATAN2(PI(),0); -> 1.570796
COT(X) 返回 X 的余切:
mysql> SELECT COT(12); -> -1.57267341 mysql> SELECT COT(0); -> NULL
RAND() RAND(N) 返回一个范围在 0 到 1.0 之间的随机浮点值。如果一个整数参数 N 被指定,它被当做种子值使用(用于产生一个可重复的数值):
mysql> SELECT RAND(); -> 0.9233482386203 mysql> SELECT RAND(20); -> 0.15888261251047 mysql> SELECT RAND(20); -> 0.15888261251047 mysql> SELECT RAND(); -> 0.63553050033332 mysql> SELECT RAND(); -> 0.70100469486881
在一个 ORDER BY 子句中,不可以使用 RAND() 值使用一个列,因为 ORDER BY 将多次重复计算列。从 MySQL 3.23 开始,你可以使用:SELECT * FROM table_name ORDER BY RAND(),这有利于得到一个来自 SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000 的集合中的随机样本。 注意,在一个 WHERE 子句中的 RAND() 将在每次 WHERE 执行时被重新计算。 RAND() 并不是预期完美的随机数发生器,但是可以代替做为产生特别的随机数一个快速的方法,这样便于在两个不同平台下的同一 MySQL 版本间移动。
LEAST(X,Y,...) 有两个或更多个参数,返回最小(最小值)的参数。参数使用下列规则进行比较:
* 如果返回值用于一个 INTEGER 语境,或所有的参数是整数值,它们作为整数比较。 * 如果返回值用于一个 REAL 语境,或所有的参数均是实数值,它们作为实数被比较。 * 如果任何一个参数是字母大小写敏感的,参数作为大小写敏感的字符串进行比较。 * 在其它情况下,参数做为忽略大小写的字符中进行比较:
mysql> SELECT LEAST(2,0); -> 0 mysql> SELECT LEAST(34.0,3.0,5.0,767.0); -> 3.0 mysql> SELECT LEAST("B","A","C"); -> "A"
在早于 MySQL 3.22.5 的版本中,你可以使用 MIN() 代替 LEAST。
GREATEST(X,Y,...) 返回最大(最大值)参数。参数使用与 LEAST 一致的规则进行比较:
mysql> SELECT GREATEST(2,0); -> 2 mysql> SELECT GREATEST(34.0,3.0,5.0,767.0); -> 767.0 mysql> SELECT GREATEST("B","A","C"); -> "C"
在早于 MySQL 3.22.5 的版本中,可以使用 MAX() 代替 GREATEST。
DEGREES(X) 将参数 X 从弧度转换为角度,然后返回:
mysql> SELECT DEGREES(PI()); -> 180.000000
RADIANS(X) 将参数 X 从角度转换为弧度,然后返回:
mysql> SELECT RADIANS(90); -> 1.570796
TRUNCATE(X,D) 将数值 X 截到 D 个小数,然后返回。如果 D 为 0,结果将不包含小数点和小数部分:
mysql> SELECT TRUNCATE(1.223,1); -> 1.2 mysql> SELECT TRUNCATE(1.999,1); -> 1.9 mysql> SELECT TRUNCATE(1.999,0); -> 1 mysql> SELECT TRUNCATE(-1.999,1); -> -1.9
从 MySQL 3.23.51 开始,所有数字被四舍五入到零。 如果 D 是负数,那么数字的整个部分被对准零位输出:
mysql> SELECT TRUNCATE(122,-2); -> 100
注意, 十进值小数在计算机中通常不以精确数字存储,而是双精度型的值,你可能会被下列结果所愚弄:
mysql> SELECT TRUNCATE(10.28*100,0); -> 1027
上面结果的发生是因为 10.28 实际上是以某些像 10.2799999999999999 的形式被存储的。
6.3.4 日期和时间函数
对于每个类型的值范围以及日期和时间值有效指定格式,请查看章节 6.2.2 Date 和 Time 类型。
这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。
mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
DAYOFWEEK(date) 返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。索引值符合 ODBC 的标准。
mysql> SELECT DAYOFWEEK('1998-02-03'); -> 3
WEEKDAY(date) 返回 date 的星期索引(0 = Monday, 1 = Tuesday, ... 6 = Sunday):
mysql> SELECT WEEKDAY('1998-02-03 22:23:00'); -> 1 mysql> SELECT WEEKDAY('1997-11-05'); -> 2
DAYOFMONTH(date) 返回 date 是一月中的第几天,范围为 1 到 31:
mysql> SELECT DAYOFMONTH('1998-02-03'); -> 3
DAYOFYEAR(date) 返回 date 是一年中的第几天,范围为 1 到 366:
mysql> SELECT DAYOFYEAR('1998-02-03'); -> 34
MONTH(date) 返回 date 中的月份,范围为 1 到 12:
mysql> SELECT MONTH('1998-02-03'); -> 2
DAYNAME(date) 返回 date 的星期名:
mysql> SELECT DAYNAME("1998-02-05"); -> 'Thursday'
MONTHNAME(date) 返回 date 的月份名:
mysql> SELECT MONTHNAME("1998-02-05"); -> 'February'
QUARTER(date) 返回 date 在一年中的季度,范围为 1 到 4:
mysql> SELECT QUARTER('98-04-01'); -> 2
WEEK(date) WEEK(date,first) 对于星期日是一周中的第一天的场合,如果函数只有一个参数调用,返回 date 为一年的第几周,返回值范围为 0 到 53 (是的,可能有第 53 周的开始)。两个参数形式的 WEEK() 允许你指定一周是否以星期日或星期一开始,以及返回值为 0-53 还是 1-52。 这里的一个表显示第二个参数是如何工作的:
(阅读次数:)
共12页: 上一页 [1] [2] [3] [4] [5] [6] 7 [8] [9] [10] [11] [12] 下一页
|
| 上一篇:Linux/Unix下ODBC的安装、配置与编程 下一篇:怎么备份MySQL数据库 |
|
[ 收藏]
[ 推荐]
[ 评论(0条)]
[返回顶部] [打印本页]
[关闭窗口] |
|
|
| |
|
|
|
|