用在SELECT和WHERE子句中的函数

上传人:宝路 文档编号:18172325 上传时间:2017-11-13 格式:DOCX 页数:47 大小:82.01KB
返回 下载 相关 举报
用在SELECT和WHERE子句中的函数_第1页
第1页 / 共47页
用在SELECT和WHERE子句中的函数_第2页
第2页 / 共47页
用在SELECT和WHERE子句中的函数_第3页
第3页 / 共47页
用在SELECT和WHERE子句中的函数_第4页
第4页 / 共47页
用在SELECT和WHERE子句中的函数_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《用在SELECT和WHERE子句中的函数》由会员分享,可在线阅读,更多相关《用在SELECT和WHERE子句中的函数(47页珍藏版)》请在金锄头文库上搜索。

1、用在 SELECT 和 WHERE 子句中的函数在一个 SQL 语句中的 select_expression 或 where_definition 可由使用下面描述的函数的任何表达式组成。 包含 NULL 的一个表达式总是产生一个 NULL 值,否则除非表达式所包含的操作符和函数在文档中说明。 注意:在一个函数名和跟随它的括号之间不许没有空格。这帮助 MySQL分析器区分函数调用和具有相同名字的对表或列的引用,尽管允许在参数周围有空格。 为了简洁,例子以缩写形式显示从 mysql 程序输出。因此: mysql select MOD(29,9); 1 rows in set (0.00 sec)

2、 +-+| mod(29,9) |+-+| 2 |+-+被显示为这样: mysql select MOD(29,9);- 27.4.1 分组函数 ( . ) 括号。使用它们来强制在一个表达式的计算顺序。 mysql select 1+2*3;- 7mysql select (1+2)*3;- 97.4.2 常用的算术操作一般的算术操作符是可用的。注意在-、+和*情况下,如果两个参数是整数,结果用 BIGINT(64 位)精度计算! + 加法mysql select 3+5;- 8- 减法mysql select 3-5;- -2 * 乘法mysql select 3*5;- 15mysql s

3、elect 18014398509481984*18014398509481984.0;- 324518553658426726783156020576256.0mysql select 18014398509481984*18014398509481984;- 0最后一个表达式的结果是不正确的,因为整数乘积的结果超过用 BIGINT计算的 64 位范围。 / 除法mysql select 3/5;- 0.60被零除产生一个 NULL 结果: mysql select 102/(1-1);- NULL一个除法用 BIGINT 算术计算,只要在它的结果被转换到一个整数的上下文中执行! 7.4.3

4、 位函数MySQL 为位操作使用 BIGINT(64 位)算法,因此这些操作符有最大 64 位的一个范围。 | 位或mysql select 29 | 15;- 31& 位与mysql select 29 & 15;- 13select 1 4 右移位一个长(BIGINT)数字。 mysql select 4 2- 1 颠倒所有的位。 mysql select 5 & 1- 4BIT_COUNT(N) 返回在参数 N 设定的位的数量。 mysql select BIT_COUNT(29);- 47.4.4 逻辑运算所有的逻辑函数返回 1( TRUE)或 0(FALSE)。 NOT ! 逻辑非。

5、如果参数是 0,返回 1,否则返回 0。例外: NOT NULL 返回NULL。 mysql select NOT 1;- 0mysql select NOT NULL;- NULLmysql select ! (1+1);- 0mysql select ! 1+1;- 1最后的例子返回 1,因为表达式作为 (!1)+1 计算。 OR | 逻辑或。如果任何一个参数不是 0 并且不 NULL,返回 1。 mysql select 1 | 0;- 1mysql select 0 | 0;- 0mysql select 1 | NULL;- 1AND & 逻辑与。如果任何一个参数是 0 或 NULL

6、,返回 0,否则返回 1。 mysql select 1 & NULL;- 0mysql select 1 & 0;- 07.4.5 比较运算符比较操作得出值 1(TRUE)、0 (FALSE)或 NULL 等结果。这些函数工作运用在数字和字符串上。当需要时,字符串自动地被变换到数字且数字到字符串(如在 Perl)。 MySQL 使用下列规则执行比较: 如果一个或两个参数是 NULL,比较的结果是 NULL,除了操作符。如果在比较中操作的两个参数是字符串,他们作为字符串被比较。 如果两个参数是整数,他们作为整数被比较。 十六进制的值如果不与一个数字比较,则被当作二进制字符串。 如果参数之一是一

7、个 TIMESTAMP 或 DATETIME 列而其他参数是一个常数,在比较执行前,常数被转换为一个时间标记。这样做是为了对ODBC 更友好。 在所有其他的情况下,参数作为浮点(实数)数字被比较。 缺省地,字符串使用当前的字符集以大小写敏感的方式进行(缺省为 ISO-8859-1 Latin1,它对英语运用得很出色)。 下面的例子演示了对于比较操作字符串到数字的转换: mysql SELECT 1 6x;- 0mysql SELECT 7 6x;- 1mysql SELECT 0 x6;- 0mysql SELECT 0 = x6;- 1= 等于mysql select 1 = 0;- 0my

8、sql select 0 = 0;- 1mysql select 0.0 = 0;- 1mysql select 0.01 = 0;- 0mysql select .01 = 0.01;- 1select .01 1mysql select .01 0mysql select zapp 1select 0.1 1select 2 1= 大于或等于mysql select 2 = 2;- 1 大于mysql select 2 2;- 0安全等于 Nullmysql select 1 1, NULL NULL, 1 NULL;- 1 1 0IS NULL IS NOT NULL 测试值是否是或不是

9、 NULL mysql select 1 IS NULL, 0 IS NULL, NULL IS NULL:- 0 0 1mysql select 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;expr BETWEEN min AND max 如果 expr 对大于或等于 min 且 expr 是小于或等于 max,BETWEEN 返回 1,否则它返回 0。如果所有的参数类型是一样得,这等价于表达式(min select 1 BETWEEN 2 AND 3;- 0mysql select b BETWEEN a AND c;- 1mysql se

10、lect 2 BETWEEN 2 AND 3;- 1mysql select 2 BETWEEN 2 AND x-3;- 0expr IN (value,.) 如果 expr 是在 IN 表中的任何值,返回 1,否则返回 0。如果所有的值是常数,那么所有的值根据 expr 类型被计算和排序,然后项目的搜索是用二进制的搜索完成。这意味着如果 IN 值表全部由常数组成,IN 是很快的。如果 expr 是一个大小写敏感的字符串表达式,字符串比较以大小写敏感方式执行。 mysql select 2 IN (0,3,5,wefwf);- 0mysql select wefwf IN (0,3,5,wef

11、wf);- 1 expr NOT IN (value,.) 与 NOT (expr IN (value,.)相同。 ISNULL(expr) 如果 expr 是 NULL,ISNULL()返回 1,否则它返回 0。 mysql select ISNULL(1+1); - 0mysql select ISNULL(1/0);- 1注意,使用=的 NULL 的值比较总为假! COALESCE(list) 回来 list 中第一个非 NULL 的单元。 mysql select COALESCE(NULL,1);- 1mysql select COALESCE(NULL,NULL,NULL);- N

12、ULLINTERVAL(N,N1,N2,N3,.) 如果 N select INTERVAL(23, 1, 15, 17, 30, 44, 200);- 3mysql select INTERVAL(10, 1, 10, 100, 1000);- 2mysql select INTERVAL(22, 23, 30, 44, 200);- 0 7.4.6 字符串比较函数通常,如果在字符串比较中的任何表达式是区分大小写的,比较以大小写敏感的方式执行。 expr LIKE pat ESCAPE escape-char 使用 SQL 的简单的正规表达式比较的模式匹配。返回 1(TRUE)或0(FALS

13、E)。用 LIKE,你可以在模式中使用下列 2 个通配符字符: % 匹配任何数目的字符,甚至零个字符_ 精确匹配一个字符mysql select David! LIKE David_; - 1mysql select David! LIKE %D%v%;- 1为了测试一个通配符的文字实例,用转义字符的加在字符前面。如果你不指定 ESCAPE 字符,假定为“” : % 匹配一%字符_ 匹配一_字符mysql select David! LIKE David_;- 0mysql select David_ LIKE David_;- 1为了指定一个不同的转义字符,使用 ESCAPE 子句: mys

14、ql select David_ LIKE David|_ ESCAPE |;- 1LIKE 允许用在数字的表达式上!(这是 MySQL 对 ANSI SQL LIKE 的一个扩充。) mysql select 10 LIKE 1%;- 1注意:因为 MySQL 在字符串中使用 C 转义语法(例如,“n”),你必须在你的 LIKE 字符串中重复任何 “”。例如,为了查找 “n”,指定它为“ n”,为了查找“”,指定它为 “”(反斜线被分析器剥去一次,另一次是在模式匹配完成时,留下一条单独的反斜线被匹配)。 expr NOT LIKE pat ESCAPE escape-char 与 NOT (

15、expr LIKE pat ESCAPE escape-char)相同。 expr REGEXP pat expr RLIKE pat 执行一个字符串表达式 expr 对一个模式 pat 的模式匹配。模式可以是一个扩充的正则表达式。见 MySQL 正则表达式句法的 H 描述. 如果 expr匹配 pat,返回 1,否则返回 0。RLIKE 是 REGEXP 的一个同义词,提供了与 mSQL 的兼容性。注意:因为 MySQL 在字符串中使用 C 转义语法(例如, “n”), 你必须在你的 REGEXP 字符串重复任何 “”。在MySQL3.23.4 中,REGEXP 对于正常的(不是二进制)字符串是忽略大小写。 mysql select Monty! REGEXP m%y%;- 0mysql select Monty! REGEXP .*;- 1mysql select new*n*line REGEXP new*.*li

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号