mysql语句时对用例的说明
语句用于计算条件列表并返回多个可能结果表达式中的一个的情况。
案例有两种格式:
一个简单的案例函数将表达式与一组简单表达式进行比较,以确定结果。
案例搜索函数计算一组布尔表达式以确定结果。
这两种格式支持可选的其他参数。
语法
简单案例功能:
复制代码代码如下所示:
案例input_expression
当when_expression然后result_expression
{…n }
{
其他else_result_expression
结束
案例搜索功能:
复制代码代码如下所示:
案例
当boolean_expression然后result_expression
{…n }
{
其他else_result_expression
结束
参数
input_expression
它是一个表达式,计算使用一个简单的案例format.input_expression当是任何有效的微软SQL Server的表达。
当when_expression
一个简单的表达式相比,input_expression使用一个简单的案例format.when_expression当是任意有效的SQL Server的表达,input_expression数据类型和每个when_expression必须相同或隐性。
占位符表示多个当when_expression然后result_expression条款或当boolean_expression然后result_expression从句可以用。
然后result_expression
一个表达式,返回时input_expression = when_expression价值是真实的,或当boolean_expression价值是真的。
结果表达式是任意且有效的SQL Server表达式。
其他else_result_expression
一个表达式返回时价值的比较是不正确的。如果省略该参数,比较操作值是不正确的,这个案件将返回null value.else_result_expression是任意有效的SQL Server expression.else_result_expression和所有result_expression数据类型必须相同,或必须隐性转换。
当boolean_expression
布尔表达式,计算时采用案例搜索format.boolean_expression是任意有效的布尔表达式。
结果类型
最高优先级的规则类型是从result_expressions和可选的else_result_expression.for更多信息类型集合,看到该数据类型的优先级。
结果值
简单案例功能:
input_expression计算,然后计算每一项的input_expression = when_expression当子句中指定的顺序。
返回TRUE值第一result_expression(input_expression = when_expression)。
如果有一个真正的价值不input_expression = when_expression,当SQL子句指定,SQL Server将返回else_result_expression;如果没有else子句指定,则返回空值。
案例搜索功能:
每个在子句中指定的顺序boolean_expression评价。
返回一个真值的boolean_expression第一result_expression。
如果有一个真正的价值不boolean_expression,当SQL子句指定,SQL Server将返回else_result_expression;如果没有else子句指定,则返回空值。
下面是一些mysql语句的例子。
A.使用SELECT语句和简单的案例函数
在SELECT语句中,只有当它是相等的且不进行任何其他比较时,简单的情况函式才会检查。
例如,使用案例功能改变图书分类显示。
复制代码代码如下所示:
使用酒吧
去
选择类别=
案件类型
when'popular_comp'then'popular计算
when'mod_cook'then'modern烹饪
when'business'then'business
when'psychology'then'psychology
when'trad_cook'then'traditional烹饪
else'not尚未归类的
结束,
铸造(标题为varchar(25))as'shortened标题,
价格价格
从标题
价格不为零
按类型、价格订购
按类型计算AVG(价格)
去
注释后,我尝试不使用类别=。
我使用的代码是:
复制代码代码如下所示:
选择
病例性别
当1 then'nan
当0 then'nv
结束性别
从
t_swidy_day_nutrient
结果集:
品类缩短的产权价格
----------------------------------------------------------------------
你可以打击计算机2.99
商业烹饪与电脑:S 11.95
繁忙的管理人员数据19.99
业务直谈计算机19.99
AVG
==========================
十三点七三
品类缩短的产权价格
----------------------------------------------------------------------
现代烹饪美食微波2.99
现代烹饪gastronomi 19.99硅谷
AVG
==========================
十一点四九
品类缩短的产权价格
----------------------------------------------------------------------
硅谷20的流行计算秘诀
流行的计算,但它是用户友好的22.95
AVG
==========================
二十一点48
品类缩短的产权价格
----------------------------------------------------------------------
没有恐惧的心理生活7
心理情感安全:一个新的7.99
心理是愤怒的敌人10.95
心理学长期数据的意义19.99
心理学的计算机恐惧症,磷21.59
AVG
==========================
十三点五零
品类缩短的产权价格
----------------------------------------------------------------------
传统的烹饪五十年白金11.95
传统烹饪寿司,14.99个人
传统烹饪洋葱,韭菜和大蒜20.95
AVG
==========================
十五点九六
(21行(s)受影响)
b.使用简单的案例功能和案例搜索功能。
SELECT语句
在SELECT语句中,案例搜索函数允许根据比较值替换结果集中的值。
示例:价格(货币列)显示为基于本书价格范围的文本注释。
复制代码代码如下所示:
使用酒吧
去
select'price类= =
案例
当价格为零then'not但价格'
当价格低于10 then'very合理的标题
当价格或10,价格20 then'coffee表标题
else'expensive书!
结束,
铸造(标题为varchar(20))as'shortened标题
从标题
ORDER BY price
去
结果集:
价格类别缩短标题
-----------------------------------------
尚未标价的网络礼仪
尚未对公司的心理定价
非常合理的标题美食微波
非常合理的标题你可以战斗的计算
很合理的头衔,生活没有恐惧。
非常合理的标题情感安全:
咖啡桌标题是愤怒的敌人
咖啡桌标题烹饪与计算
五十年bucki咖啡表标题
咖啡桌标题寿司,任何人
咖啡depri延长数据表标题
硅谷咖啡表标题的胃
咖啡桌标题直谈
咖啡桌标题忙碌的行政人员
昂贵的书!硅五的秘密
昂贵的书!洋葱,韭葱和g
昂贵的书!电脑恐惧症,
昂贵的书!但这是User Frien
(18行(s)受影响)
C.用一个实例和子功能选择
例如,案例和然后用于生成一个作者列表、图书标识号和每个作者的图书类型。
复制代码代码如下所示:
使用酒吧
选择子串((RTrim ++(a.au_fname)
RTrim(a.au_lname)+),1, 25)作为名称,a.au_id,ta.title_id,
=型
案例
当字符串(ta.title_id,1, 2)= 'bu'then'business
当字符串(ta.title_id,1, 2)= 'mc'then'modern烹饪
当字符串(ta.title_id,1, 2)= 'pc'then'popular计算
当字符串(ta.title_id,1, 2)= 'ps'then'psychology
当字符串(ta.title_id,1, 2)= 'tc'then'traditional烹饪
结束
从titleauthor TA加入对ta.au_id = a.au_id作者
结果集:
名称au_id title_id型
---------------------------------------------------------------
Johnson White 172-32-1176 ps3333心理学
Marjorie Green 213-46-8915 bu1032业务
Marjorie Green 213-46-8915 bu2075业务
Cheryl Carson 238-95-7766 pc1035流行的计算
米迦勒O'Leary 267-41-2394 bu1111业务
米迦勒O'Leary 267-41-2394 tc7777传统烹饪
院长直274-80-9391 bu7832业务
亚伯拉罕409-56-7008 bu1032业务
安无聊的427-17-2319 pc8888流行的计算
Burt Gringlesby 472-27-2349 tc7777传统烹饪
Charlene Locksley 486-29-1786 pc9999流行的计算
Charlene Locksley 486-29-1786 ps7777心理学
雷金纳德blotchet厅648-92-1872 tc4203传统烹饪
Akiko Yokomoto 672-71-3249 tc7777传统烹饪
Innes del Castillo 712-45-1867 mc2222现代烹饪
Michel DeFrance 722-51-5454 mc3021现代烹饪
贝尔斯登macfeather 724-80-9391 bu1111业务
贝尔斯登macfeather 724-80-9391 ps1372心理学
Livia Karsen 756-30-7391 ps1372心理学
Sylvia Panteley 807-91-6654 tc3218传统烹饪
Sheryl Hunter 846-92-7186 pc8888流行的计算
Anne Ringer 899-46-2035 mc3021现代烹饪
Anne Ringer 899-46-2035 ps2091心理学
Albert Ringer 998-72-3567 ps2091心理学
Albert Ringer 998-72-3567 ps2106心理学
(25行(s)受影响)
案例可能是SQL中最被误用的关键词之一。
虽然它以前可能被用来创建字段,但它也有更多的用法。
例如,可以在WHERE子句中使用用例。
首先,看看案例的语法。在一般选择中,语法如下:
复制代码代码如下所示:
选择=
案例
当
当
其他的
结束
上面的代码需要使用特定的参数来替换括号中的内容。
实例uff1a
复制代码代码如下所示:
使用酒吧
去
选择
标题,
价格范围=
案例
当价格为零then'unpriced
当价格低于10 then'bargain
在10和20之间的价格then'average
else'gift打动亲戚
结束
从标题
订单价格
去
这是一个典型的用例,但是用例的使用实际上可以做更多的事情。
例如,本案中的下列分组从句:
复制代码代码如下所示:
标题的select'number,计数(*)
从标题
组
案例
当价格为零then'unpriced
当价格低于10 then'bargain
在10和20之间的价格then'average
else'gift打动亲戚
结束
去
您甚至可以将这些选项组合为一个BY子句,例如:
复制代码代码如下所示:
使用酒吧
去
选择
案例
当价格为零then'unpriced
当价格低于10 then'bargain
在10和20之间的价格then'average
else'gift打动亲戚
结束范围,
标题
从标题
组
案例
当价格为零then'unpriced
当价格低于10 then'bargain
在10和20之间的价格then'average
else'gift打动亲戚
结束,
标题
顺序
案例
当价格为零then'unpriced
当价格低于10 then'bargain
在10和20之间的价格then'average
else'gift打动亲戚
结束,
标题
去
注意,为了在逐组中使用case,查询语句需要在组中按组逐块重复case块。
除了选择自定义字段外,案例在很多情况下也是非常有用的。
在深度上,您可以得到以前认为不可能的组排序结果集。
复制代码代码如下所示:
*
从销售中选择*;
+ + + + ----- ------------ -------- -------- + + + + -------- ------ ------------
Num名冬季| | | |春天夏天秋天的范畴| | | |
+ + + + ----- ------------ -------- -------- + + + + -------- ------ ------------
| 1 | java | 1067 | 200 | 150 | 267 |假日|
| 2 | C | 970 | 770 | 531 | 486 |职业|
| 3 | Javascript | 53 | 13 | 21 | 856 |文学|
| 4 | SQL | 782 | 357 | 168 | 250 |职业|
| 5 | Oracle | 589 | 795 | 367 | 284 |假日|
| 6 | MySQL | 953 | 582 | 336 | 489 |文学|
| 7 | C | 752 | 657 | 259 | 478 |文学|
| 8 | Python | 67 | 23 | 83 | 543 |假日|
| 9 | PHP | 673 | 48 | 625 | 52 |职业|
+ + + + ----- ------------ -------- -------- + + + + -------- ------ ------------
9行(0.01秒)
选择名称作为名称,
案例>类别
>假日,然后是季节性
->当职业然后bi_annual
>文学时,随机结尾为
从->销售;
------------ ----------- + + +
|名字|模式|
------------ ----------- + + +
| java |季节|
| C | bi_annual |
| Javascript |随机|
| SQL | bi_annual |
| Oracle |季节|
| MySQL |随机|
| C |随机|
| Python |季节|
| PHP | bi_annual |
------------ ----------- + + +
9行(0秒)
* /
下拉表销售;
创建表销售(
Num MEDIUMINT不空auto_increment,
名称char(20),
冬天的int,
春秋国际,
夏天的int,
掉到,
类别char(13),
主键(数字)
)型= MyISAM;
插入销售值(1,1067, 200, 150,267,'java,'holiday);
插入销售值(2,C,970770531486,'profession);
插入销售价值(3,'javascript ',53,1321856,'文学');
插入销售值(4,782357168250,'profession 'sql ',');
插入销售值(5,589795367284,'holiday 'oracle ',');
插入销售值(6,953582336489,'mysql ','文学');
插入销售值(7,752657259478,'cplus ','文学');
插入销售价值(8,'python ',67,2383543,'holiday);
插入销售价值(9,'php ',67348625,52,'profession);
从销售中选择*;
选择名称作为名称,
案例类别
当假日,然后季节性
当职业然后bi_annual
当文学时,随机结尾为
从销售;
简单的陈述
复制代码代码如下所示:
选择在10 * 2 = 30然后十正确
当10 * 2 = 40然后40正确
else'should是10 * 2 = 20
结束;
多个表达式
复制代码代码如下所示:
选择案例10 * 2
当20然后20正确
当30十正确
当40然后40正确
结束;
在选择查询时使用案例
复制代码代码如下所示:
*
MySQL >选择名字,ratingid评级,
案例- RatingID
r'then'under -> 17时需要一个成人。
x'then'no ->在17以下。
when'nr'then'use自由裁量权当->租赁。
可以租给未成年人。
结束为>策略
从- DVD
按名称排序;
+ + + + ----------- -------- ------------------------------
名称评级政策| | | |
+ + + + ----------- -------- ------------------------------
非洲PG可以| | |租给未成年人。|
Amadeus PG可以| | |租给未成年人。|
|圣诞NR使用自由裁量权在租赁。| | |
doc G可以| | |租给未成年人。|
|猎鹰NR使用自由裁量权在租赁。| | |
|醪| R |下17需要一个成人。|
|显示NR使用自由裁量权在租赁。| | |
|观NR使用自由裁量权在租赁。| | |
+ + + + ----------- -------- ------------------------------
8行(0.01秒)
* /
下拉表DVD;
创建表(DVD)
不空auto_increment主键ID smallint,
varchar(60)非空名,
numdisks字段不为空的默认1,
ratingid varchar(4)不为空,
statid char(3)不为空
)
InnoDB引擎=;
插入DVD(名称、numdisks,RatingID,statid)
值(圣诞节,1,'nr ','s1),
('doc ',1,'克','s2),
('africa ',1,'pg ','s1),
('falcon ',1,'nr ','s2),
('amadeus ',1,'pg ','s2),
('show ',2,'nr ','s2),
(',1,'nr ','s1),
('mash ',2,R,'s2);
选择的名字,ratingid评级,
案例ratingid
when'r'then'under 17需要一个成人。
when'x'then'no一17以下。
when'nr'then'use租房时的自由裁量权。
else'ok租给未成年人。
最后是政策
从DVD
按名称排序;