4-MySQL函数(字段处理函数&条件判断函数)

一、字段处理函数

  • 字符串处理函数
    concat(field1,field2 …… )
    substr(str,pos,len)
    replace(str,old_str,new_str)【Hive:regexp_replace('2020-03-15','-','') 】

  • 日期处理函数
    current_date():返回当前日期;
    date_add(日期格式,INTERVAL 数字 day/week)/date_sub(日期格式,INTERVAL 数字 day/week);
    datediff(date1,date2)【date1-date2】;

  • 数学函数
    round(x,y):四舍五入,返回对x保留y小数位的数字;

二、条件判断函数

  • if 函数:单条件判断
    语法:if(condition, value_if_true, value_if_false)
    特点:使用规则简单清晰,但多条件判断写法不够直观;
    eg:高考分数>620,就返回A,否则返回B(另一种:如果是江苏省,高考分数>600,就返回A,否则……)

  • case when 函数:多条件判断
    简单函数:CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
    搜索函数:CASE WHEN [expr] THEN [result1]…ELSE [default] END
    注意两点:1、THEN后面没有逗号;2、结尾有END
    eg:查学生数据:针对安徽学生,高考分数>620,返回A,否则返回B;字段:学号,姓名,籍贯,类别(A或B);

三、练习举例

表例

--hive中别名用··来区分

--1.查询学生专业数据;字段:学号,姓名,学院,专业,格式:学号-姓名-学院-专业;

select
concat(stu_id,'-',name,'-',college,'-',major) as 学生信息

from student_info;

--2.问题1返回的数据,把“专业”字段里“专业”二字去掉,其他字段和格式都不变;
--eg:问题1返回:学号xxx-姓名-xxx学院-xxx专业:改成:学号xxx-姓名-xxx学院-xxx

select
concat(stu_id,'-',name,'-',college,'-',replace(major,'专业','')) as 学生信息

from student_info;

--3.查询学生入学的月份;字段:学号,姓名,入学月份(年-月);

select 
    stu_id as 学号,
    name as 姓名,
    substr(entry_date,1,7) as 入学月份

from student_info;

--4.查询学生已经入学多少天了;字段:学号,姓名,入学多少天;

select 
    stu_id as 学号,
    name as 姓名,
    datediff(current_date(),entry_date) as 入学天数

from student_info;

--5.这届学生的入学日期都是2016-09-01,60天后举办运动会,该怎么查询那天日期是多少?

select
    distinct date_add(entry_date,INTERVAL 60 day) as 运动会日期

from student_info;

--6.江苏的高考比较难,希望对这届江苏学生的高考分数*1.1,保留1位小数;字段:学号,姓名,高考分数;
select
    stu_id as 学号,
    name as 姓名,
    round(gk_score*1.1,1) as 高考分数

from student_info;

--7.将学生分班,高考分数小于610,进C班;小于630,进B班,否则进A班;字段:学号,姓名,高考分数,班级(用if);

select
    stu_id as 学号,
    name as 姓名,
    gk_score as 高考分数,
    if(gk_score<610,'C',if(gk_score>=630,'A','B')) as 班级

from student_info;

--8.查询来自安徽省、江苏省的学生,年龄分段情况:(用case when);字段:学号,姓名,年龄段;
--小于等于18岁,返回Y
--大于等于19,小于等于20,返回M

select
    stu_id as 学号
    ,name as 姓名
    ,age as 年龄
    ,case when age between 19 and 20 then 'M'
        when age<=18 then 'Y'
        end as 年龄段

from student_info
where from_where in ('安徽省','江苏省');


--离散值(需要全部枚举出来)举例
select
    stu_id 
    ,name 
    ,case age
        when 18 then 'M'
        when 19 then 'Y'
        when 20 then 'Y'
        else 'other'
        end as stu_age

from student_info
where from_where in ('安徽省','江苏省');
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 S...
    忘了呼吸的那只猫阅读 2,688评论 0 8
  • Mysql 经典练习题 我使用的Mysql版本是5.7.27-log,答案可能会因版本会有少许出入。 一、数据源准...
    对三zzzzzzz阅读 1,621评论 0 8
  • Mysql 经典练习题 我使用的Mysql版本是5.7.27-log,答案可能会因版本会有少许出入。 一、数据源准...
    对三zzzzzzz阅读 1,353评论 0 4
  • 一,表关系的练习测试 请创建如下表关系,并建立相关约束 一,创建表结构数据: 创建的话肯定先创建没有关联的表,老师...
    Kevin_Luo阅读 2,718评论 0 0
  • MySQL测试题 一、表关系 请创建如下表,并创建相关约束 二、操作表 1、自行创建测试数据 2、查询“生物”课程...
    go以恒阅读 11,225评论 0 6