竹笋

首页 » 问答 » 问答 » 浅谈MySQL可支持的运算符和函数
TUhjnbcbe - 2022/11/15 21:13:00

同PHP等程序设计语言一样,MySQL也有许多DBMS都有自己的数据类型(即列类型),运算符、语句结构、关键字以及函数。其中广泛用于SELECT和WHERE子句中的函数,对程序员简化查询语句的构造,提高查询计算的效率,起着非常重要的作用。这些函数将一些复杂的查询计算操作用函数封装起来,由MySQL自己执行计算,仅将结果返回给PHP。

这些函数,涵盖了数学运算,字符串处理,逻辑运算,日期时间运算,比较运算,语句流程控制,分组汇总,排序等许多方面的处理,下面介绍常用到的一些函数。

为简便起见,用-表示执行查询后MySQL返回的结果。

强制运算

小括号()。使用它们来强制在一个表达式的计算顺序。

mysqlselect1+*;-7mysqlselect(1+)*;-9

算术运算

+加法

mysqlselect+5;-8

以此类推可以有以下的计算法:

-减法*乘法/除法

被零除产生一个NULL结果:

mysqlselect10/(1-1);-NULL

逻辑运算

所有的逻辑函数返回1(TRUE)或0(FALSE)。NULL被认为是假值。

NOT(!)逻辑非OR(

)逻辑或AND()逻辑与

比较运算符

比较操作得出值1(TRUE)、0(FALSE)或NULL等结果。这些函数工作运用在数字和字符串上。

=等于不等于!=不等于=小于或等于小于=大于或等于大于

mysqlselect;-0

ISNULL是否为空ISNOTNULL是否不为空

mysqlselect1ISNULL,0ISNULL,NULLISNULL:-

exprBETWEENminANDmax

如果expr对大于或等于min且expr是小于或等于max,BETWEEN返回1,否则它返回0。

mysqlselect1BETWEENAND;-0mysqlselectBETWEENAND;-1

exprIN(value,...)

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

mysqlselectIN(0,,5,wefwf);-0mysqlselectwefwfIN(0,,5,wefwf);-1

exprNOTIN(value,...)

与NOT(exprIN(value,...))相同。

ISNULL(expr)

如果expr是NULL,ISNULL()返回1,否则它返回0。

mysqlselectISNULL(1+1);-0mysqlselectISNULL(1/0);-1

注意,使用=的NULL的值比较总为假!

字符串比较函数

通常,如果在字符串比较中的任何表达式是区分大小写的,比较以大小写敏感的方式执行。

exprLIKEpattern[ESCAPEescape-char]

将expr与模式字符串pattern进行模式匹配。返回1(TRUE)或0(FALSE)。用LIKE,你可以在模式中使用下列个

%匹配任何数目的字符,甚至零个字符_精确匹配一个字符

mysqlselectDavid!LIKEDavid_;-1mysqlselectDavid!LIKE%D%v%;-1

为了测试一个通配符的文字实例,用转义字符的加在字符前面。如果你不指定ESCAPE字符,假定为“\”:

\%匹配%字符\_匹配_字符

mysqlselectDavid!LIKEDavid\_;-0mysqlselectDavid_LIKEDavid\_;-1

为了指定一个不同的转义字符,使用ESCAPE子句:

mysqlselectDavid_LIKEDavid

_ESCAPE

;-1

LIKE允许用在数字的表达式上!(这是MySQL对ANSISQLLIKE的一个扩充。)

mysqlselect10LIKE1%;-1

exprNOTLIKEpattern[ESCAPEescape-char]

与NOT(exprLIKEpattern[ESCAPEescape-char])相同。

控制流函数

IF(expr1,expr,expr)

如果expr1是TRUE(expr10且expr1NULL),那么IF()返回expr,否则它返回expr。IF()返回一个数字或字符串值,取决于它被使用的上下文。

mysqlselectIF(1,,);-mysqlselectIF(1,yes,no);-yesmysqlselectIF(strcmp(test,test1),yes,no);-no

expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,应该使用一个比较操作来做。

mysqlselectIF(0.1,1,0);-0mysqlselectIF(0.10,1,0);-1

在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值,导致测试IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。

CASEvalueWHEN[

1
查看完整版本: 浅谈MySQL可支持的运算符和函数