mysql函数和操作符Word文档格式.docx

上传人:b****4 文档编号:7753792 上传时间:2023-05-09 格式:DOCX 页数:124 大小:90.05KB
下载 相关 举报
mysql函数和操作符Word文档格式.docx_第1页
第1页 / 共124页
mysql函数和操作符Word文档格式.docx_第2页
第2页 / 共124页
mysql函数和操作符Word文档格式.docx_第3页
第3页 / 共124页
mysql函数和操作符Word文档格式.docx_第4页
第4页 / 共124页
mysql函数和操作符Word文档格式.docx_第5页
第5页 / 共124页
mysql函数和操作符Word文档格式.docx_第6页
第6页 / 共124页
mysql函数和操作符Word文档格式.docx_第7页
第7页 / 共124页
mysql函数和操作符Word文档格式.docx_第8页
第8页 / 共124页
mysql函数和操作符Word文档格式.docx_第9页
第9页 / 共124页
mysql函数和操作符Word文档格式.docx_第10页
第10页 / 共124页
mysql函数和操作符Word文档格式.docx_第11页
第11页 / 共124页
mysql函数和操作符Word文档格式.docx_第12页
第12页 / 共124页
mysql函数和操作符Word文档格式.docx_第13页
第13页 / 共124页
mysql函数和操作符Word文档格式.docx_第14页
第14页 / 共124页
mysql函数和操作符Word文档格式.docx_第15页
第15页 / 共124页
mysql函数和操作符Word文档格式.docx_第16页
第16页 / 共124页
mysql函数和操作符Word文档格式.docx_第17页
第17页 / 共124页
mysql函数和操作符Word文档格式.docx_第18页
第18页 / 共124页
mysql函数和操作符Word文档格式.docx_第19页
第19页 / 共124页
mysql函数和操作符Word文档格式.docx_第20页
第20页 / 共124页
亲,该文档总共124页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

mysql函数和操作符Word文档格式.docx

《mysql函数和操作符Word文档格式.docx》由会员分享,可在线阅读,更多相关《mysql函数和操作符Word文档格式.docx(124页珍藏版)》请在冰点文库上搜索。

mysql函数和操作符Word文档格式.docx

这能帮助 

MySQL分析程序区分一些同函数名相同的函数调用以及表或列。

不过,函数自变量周围允许有空格出现。

可以通过选择--sql-mode=IGNORE_SPACE来打开MySQL服务器的方法使服务器接受函数名后的空格。

个人客户端程序可通过选择mysql_real_connect()的CLIENT_IGNORE_SPACE实现这一状态。

在以上两种情况中,所有的函数名都成为保留字。

请参见5.3.2节,“SQL服务器模式”. 

为节省时间,本章中对大多数例子使用简写形式展示了mysql程序的输出结果。

对于以下格式的举例展示:

mysql>

SELECTMOD(29,9);

+-----------+

|mod(29,9)|

 

2|

1rowsinset(0.00秒)

使用如下格式进行代替:

->

2

12.1. 

操作符

12.1.1. 

操作符优先级

以下列表显示了操作符优先级的由低到高的顺序。

排列在同一行的操作符具有相同的优先级。

:

=

||,OR,XOR

&

AND

NOT

BETWEEN,CASE,WHEN,THEN,ELSE

=,<

=>

>

=,>

<

>

!

=,IS,LIKE,REGEXP,IN

|

<

-,+

*,/,DIV,%,MOD

^

-(一元减号),~(一元比特反转)

!

BINARY,COLLATE

假如HIGH_NOT_PRECEDENCESQL模式被激活,则NOT的优先级同the 

!

操作符相同。

请参见5.3.2节,“SQL服务器模式”。

12.1.2. 

圆括号

∙(...)

使用括弧来规定表达式的运算顺序,例如:

SELECT1+2*3;

7

SELECT(1+2)*3;

9

12.1.3. 

比较函数和操作符

比较运算产生的结果为1(TRUE)、0(FALSE)或NULL。

这些运算可用于数字和字符串。

根据需要,字符串可自动转换为数字,而数字也可自动转换为字符串。

本章中的一些函数(如LEAST()和GREATEST())的所得值不包括1(TRUE)、0(FALSE)和NULL。

然而,其所得值乃是基于按照下述规则运行的比较运算:

MySQL按照以下规则进行数值比较:

∙若有一个或两个参数为NULL,除非NULL-safe<

等算符,则比较运算的结果为NULL。

∙若同一个比较运算中的两个参数都是字符串,则按照字符串进行比较。

∙若两个参数均为整数,则按照整数进行比较。

∙十六进制值在不需要作为数字进行比较时,则按照二进制字符串进行处理。

∙假如参数中的一个为TIMESTAMP或DATETIME列,而其它参数均为常数,则在进行比较前将常数转为timestamp。

这样做的目的是为了使ODBC的进行更加顺利。

注意,这不适合IN()中的参数!

为了更加可靠,在进行对比时通常使用完整的datetime/date/time字符串。

∙在其它情况下,参数作为浮点数进行比较。

在默认状态下,字符串比较不区分大小写,并使用现有字符集(默认为cp1252Latin1,同时对英语也适合)。

为了进行比较,可使用CAST()函数将某个值转为另外一种类型。

使用CONVERT()将字符串值转为不同的字符集。

请参见12.8节,“Cast函数和操作符”。

以下例子说明了比较运算中将字符串转为数字的过程:

SELECT1>

'

6x'

;

0

SELECT7>

1

SELECT0>

x6'

SELECT0='

注意,在将一个字符串列同一个数字进行比较时,MySQL不能使用列中的索引进行快速查找。

假如str_col是一个编入索引的字符串列,则在以下语句中,索引不能执行查找功能:

SELECT*FROMtbl_nameWHEREstr_col=1;

其原因是许多不同的字符串都可被转换为数值1:

1'

、'

1'

1a'

、……

∙=

等于:

SELECT1=0;

SELECT'

0'

=0;

0.0'

0.01'

.01'

=0.01;

∙<

NULL-safeequal.这个操作符和=操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。

SELECT1<

1,NULL<

NULL,1<

NULL;

1,1,0

SELECT1=1,NULL=NULL,1=NULL;

1,NULL,NULL

=

不等于:

<

SELECT.01<

zapp'

zappp'

小于或等于:

SELECT0.1<

=2;

小于:

SELECT2<

2;

∙>

大于或等于:

SELECT2>

大于:

∙ISboolean_valueISNOTboolean_value

根据一个布尔值来检验一个值,在这里,布尔值可以是TRUE、FALSE或UNKNOWN。

SELECT1ISTRUE,0ISFALSE,NULLISUNKNOWN;

1,1,1

SELECT1ISNOTUNKNOWN,0ISNOTUNKNOWN,NULLISNOTUNKNOWN;

∙ISNULLISNOTNULL

检验一个值是否为NULL。

SELECT1ISNULL,0ISNULL,NULLISNULL;

0,0,1

SELECT1ISNOTNULL,0ISNOTNULL,NULLISNOTNULL;

为了能够顺利的使用ODBC程序工作,在使用ISNULL时,MySQL支持一下额外特性:

o在一个值产生后,立即运行一个以下格式的语句,从而找到最新AUTO_INCREMENT值的所在行:

SELECT*FROMtbl_nameWHEREauto_colISNULL

当设置SQL_AUTO_IS_NULL=0时,这项操作无法运行。

请参见13.5.3节,“SET语法”。

o对于命名为NOTNULL的DATE和DATETIME列,可通过使用如下的语句找到特定日期'

0000-00-00'

SELECT*FROMtbl_nameWHEREdate_columnISNULL

运行这一步需要使用一些ODBC应用软件,因为ODBC本身不支持一个'

的时间值。

∙exprBETWEENminANDmax

假如expr大于或等于min且expr小于或等于max,则BETWEEN的返回值为1,或是0。

若所有参数都是同一类型,则上述关系相当于表达式 

(min<

=exprANDexpr<

=max)。

其它类型的转换根据本章开篇所述规律进行,且适用于3种参数中任意一种。

SELECT1BETWEEN2AND3;

b'

BETWEEN'

a'

AND'

c'

SELECT2BETWEEN2AND'

3'

x-3'

∙exprNOTBETWEENminANDmax

这相当于NOT(exprBETWEENminANDmax)。

·

COALESCE(value,...)

返回值为列表当中的第一个非NULL值,在没有非NULL值得情况下返回值为NULL。

SELECTCOALESCE(NULL,1);

SELECTCOALESCE(NULL,NULL,NULL);

NULL

GREATEST(value1,value2,...)

当有2或多个参数时,返回值为最大(最大值的)参数。

比较参数所依据的规律同LEAST()相同。

SELECTGREATEST(2,0);

SELECTGREATEST(34.0,3.0,5.0,767.0);

767.0

SELECTGREATEST('

B'

'

A'

C'

);

在没有自变量为NULL的情况下,GREATEST()的返回值为NULL。

exprIN(value,...)

∙若expr为IN列表中的任意一个值,则其返回值为1,否则返回值为0。

假如所有的值都是常数,则其计算和分类根据expr的类型进行。

这时,使用二分搜索来搜索信息。

如IN值列表全部由常数组成,则意味着IN的速度非常之快。

如expr是一个区分大小写的字符串表达式,则字符串比较也按照区分大小写的方式进行。

SELECT2IN(0,3,5,'

wefwf'

IN(0,3,5,'

IN列表中所列值的个数仅受限于max_allowed_packet值。

为了同SQL标准相一致,在左侧表达式为NULL的情况下,或是表中找不到匹配项或是表中一个表达式为NULL的情况下,IN的返回值均为NULL。

IN()语构也可用书写某些类型的子查询。

请参见13.2.8.3节,“使用ANY、IN和SOME进行子查询”。

exprNOTIN(value,...)

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

∙ISNULL(expr)

如expr为NULL,那么ISNULL()的返回值为1,否则返回值为0。

SELECTISNULL(1+1);

SELECTISNULL(1/0);

使用=的NULL值对比通常是错误的。

ISNULL()函数同ISNULL比较操作符具有一些相同的特性。

请参见有关ISNULL的说明。

INTERVAL(N,N1,N2,N3,...)

假如N<

N1,则返回值为0;

N2等等,则返回值为1;

假如N为NULL,则返回值为-1。

所有的参数均按照整数处理。

为了这个函数的正确运行,必须满足N1<

N2<

N3<

……<

Nn。

其原因是使用了二分查找(极快速)。

SELECTINTERVAL(23,1,15,17,30,44,200);

3

SELECTINTERVAL(10,1,10,100,1000);

SELECTINTERVAL(22,23,30,44,200);

LEAST(value1,value2,...)

在有两个或多个参数的情况下,返回值为最小(最小值)参数。

用一下规则将自变量进行对比:

o假如返回值被用在一个INTEGER语境中,或是所有参数均为整数值,则将其作为整数值进行比较。

o假如返回值被用在一个REAL语境中,或所有参数均为实值,则将其作为实值进行比较。

o假如任意一个参数是一个区分大小写的字符串,则将参数按照区分大小写的字符串进行比较。

o在其它情况下,将参数作为区分大小写的字符串进行比较。

假如任意一个自变量为NULL,则LEAST()的返回值为NULL。

SELECTLEAST(2,0);

SELECTLEAST(34.0,3.0,5.0,767.0);

3.0

SELECTLEAST('

注意,上面的转换规则在一些边界情形中会产生一些奇特的结果:

SELECTCAST(LEAST(3600,9223372036854775808.0)asSIGNED);

-9223372036854775808

发生这种情况的原因是MySQL在整数语境中读取9223372036854775808.0。

整数表示法不利于保存数值,因此它包括一个带符号整数。

12.1.4. 

逻辑操作符

在SQL中,所有逻辑操作符的求值所得结果均为TRUE、FALSE或NULL(UNKNOWN)。

在MySQL中,它们体现为 

1(TRUE)、0(FALSE)和NULL。

其大多数都与不同的数据库SQL通用,然而一些服务器对TRUE的返回值可能是任意一个非零值。

∙NOT!

逻辑NOT。

当操作数为0时,所得值为1;

当操作数为非零值时,所得值为 

0,而当操作数为NOTNULL时,所得的返回值为NULL。

SELECTNOT10;

SELECTNOT0;

SELECTNOTNULL;

SELECT!

(1+1);

 

->

1+1;

最后一个例子产生的结果为1,原因是表达式的计算方式和(!

1)+1相同。

∙AND&

逻辑AND。

当所有操作数均为非零值、并且不为NULL时,计算所得结果为 

1,当一个或多个操作数为0时,所得结果为0,其余情况返回值为NULL。

SELECT1&

1;

0;

SELECT0&

SELECTNULL&

∙OR||

逻辑OR。

当两个操作数均为非NULL值时,如有任意一个操作数为非零值,则结果为1,否则结果为0。

当有一个操作数为NULL时,如另一个操作数为非零值,则结果为1,否则结果为NULL。

假如两个操作数均为 

NULL,则所得结果为NULL。

SELECT1||1;

SELECT1||0;

SELECT0||0;

SELECT0||NULL;

SELECT1||NULL;

∙XOR

逻辑XOR。

当任意一个操作数为NULL时,返回值为NULL。

对于非 

NULL的操作数,假如一个奇数操作数为非零值,则计算所得结果为 

1,否则为 

0。

SELECT1XOR1;

SELECT1XOR0;

SELECT1XORNULL;

SELECT1XOR1XOR1;

aXORb的计算等同于 

(aAND(NOTb))OR((NOTa)和b)。

同样见12.1.1节,“操作符优先级”。

12.2. 

控制流程函数

∙CASEvalueWHEN[compare-value]THENresult[WHEN[compare-value]THENresult...][ELSEresult]ENDCASEWHEN[condition]THENresult[WHEN[condition]THENresult...][ELSEresult]END

在第一个方案的返回结果中,value=compare-value。

而第二个方案的返回结果是第一种情况的真实结果。

如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE部分,则返回值为NULL。

SELECTCASE1WHEN1THEN'

one'

WHEN2THEN'

two'

ELSE'

more'

END;

SELECTCASEWHEN1>

0THEN'

true'

false'

SELECTCASEBINARY'

WHEN'

THEN1WHEN'

THEN2END;

一个CASE表达式的默认返回值类型是任何返回值的相容集合类型,但具体情况视其所在语境而定。

如果用在字符串语境中,则返回结果味字符串。

如果用在数字语境中,则返回结果为十进制值、实值或整数值。

∙IF(expr1,expr2,expr3)

如果expr1是TRUE(expr1<

0andexpr1<

NULL),则IF()的返回值为expr2;

否则返回值则为expr3。

IF()的返回值为数字值或字符串值,具体情况视其所在语境而定。

SELECTIF(1>

2,2,3);

SELECTIF(1<

2,'

yes'

no'

yes'

SELECTIF(STRCMP('

test'

test1'

),'

如果expr2或expr3中只有一个明确是NULL,则IF()函数的结果类型为非NULL表达式的结果类型。

expr1作为一个整数值进行计算,就是说,假如你正在验证浮点值或字符串值, 

那么应该使用比较运算进行检验。

SELECTIF(0.1,1,0);

SELECTIF(0.1<

0,1,0);

在所示的第一个例子中,IF(0.1)的返回值为0,原因是0.1被转化为整数值,从而引起一个对IF(0)的检验。

这或许不是你想要的情况。

在第二个例子中,比较检验了原始浮点值,目的是为了了解是否其为非零值。

比较结果使用整数。

IF()(这一点在其被储存到临时表时很重要)的默认返回值类型按照以下方式计算:

表达式

返回值

expr2或expr3返回值为一个字符串。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2