Mysql最常用的十大函数

您所在的位置:网站首页 sql五个常用函数表达式 Mysql最常用的十大函数

Mysql最常用的十大函数

2024-07-03 16:20| 来源: 网络整理| 查看: 265

函数一:CONCAT

使用场景:查询时把多个字段拼接成一个字符串 select concat('id:',`id`,',name:',`name`) from `student` 解       析:需要连接的字段用逗号分隔开来,自定义的拼接符号使用单引号包裹,也使用逗号分隔注       意:这个函数需要注意的是,如果有一列值为空,那么这一列拼接的结果都会为null,为了避免这样的状况发生,需要在可能为空的列上添加函数二

函数二:IFNULL          

使用场景:查询时判断字段是否为空,如果为空则取第二个默认参数,不为空则取表中数据 SELECT IFNULL(`student_number`,'is null') FROM `sc_student`

 

解       析:两个参数,第一个参数为字段名,第二个参数为默认值注       意:是对查询结果进行的判断,如果不存在的数据是不会取默认值,如下列情况(student表中一共就十条数据):SELECT IFNULL(student_number,'is null') FROM `sc_student` WHERE id = 100 ,这种结果就是null,而不是默认值 'is null'

函数三:COALESCE        

使用场景:查询时判断字段是否为空,如果字段为空则取从第二个参数开始不为空的值,字段不为空则取表中数据 SELECT COALESCE(`student_number`,NULL,NULL,'is default') FROM `student`

 

解       析:多个参数,第一个参数为字段名,从第二个参数开始都为可选值,如果字段为空,取值是从第二个参数开始不为空的值,如果都为空,则返回null注       意:暂无

函数四:REPLACE

使用场景:查询时替换字段中的指定字符 SELECT REPLACE(`name`,'陈小婷','小红') FROM `student`

解       析:三个参数,第一个参数为字段名,第二个参数为此字段中需要替换的字符串,第三个参数为替换后的字符串注       意:第二个参数值 替换成 第三个参数值

函数五:FIND_IN_SET

使用场景:指定字符在字段中是否存在,这类字段都有一个特点,就是会有多个值,以 ','(英文逗号)分隔 SELECT `id` , `name` , `score` from `student` where find_in_set ('100' , `score` )

 

解       析:两个参数,第一个参数为查询的条件,第二个参数为需要匹配的字段;假设学生表有个字段 score 用来存三门课的分数,是以 ','(英文逗号分隔),这条语句就是查询学生表中有至少一门分数是100分的学生 id 和 name注       意:两个参数的先后顺序,经常容易写颠倒,最坑的是写颠倒了程序不报错...

函数六:CASE

使用场景:一张表中有 state 字段,取值为 0(禁用) 或 1(启用),但是想在查询结果中分别显示对应的中文汉字  SELECT `id` , `nickname` , `state` ,(CASE `state` WHEN 0 THEN '禁用' WHEN 1 THEN '启用' ELSE '其他' END ) `state_new` FROM `student`

解       析:查询学生表的id,名称和状态,当状态为0时显示 禁用 ,为1时显示 启用 ,不为0和1时显示 其他注       意:最后有一个end作为结束,不要忘了

函数七:GROUP_CONCAT    

使用场景:假如有一张产品表,一张产品标签表以及一张产品标签关联表,想查出每个产品对应的多个产品标签 id  SELECT pi.id,GROUP_CONCAT( ptr.product_tag_id ) as tags FROM `product_info` pi LEFT JOIN `product_tag_rel` ptr ON pi.id = ptr.product_info_id GROUP BY pi.id

 

解       析:查询每一个产品以及每一个产品对应的产品标签 id(产品标签 id 会以逗号分隔)注       意:分组

函数八:FROM_UNIXTIME

使用场景:时间戳转日期格式 SELECT `id` , FROM_UNIXTIME(`add_time`, '%Y-%m-%d %H:%i') FROM `student`

 

解       析:查询学生表的 id 和格式化后的创建时间(年-月-日 时:分)注       意:format 字母的大小写

函数九:TIMESTAMPDIFF

使用场景:求出时间差 SELECT TIMESTAMPDIFF(SECOND , `create_time` , `update_time`)  FROM `student` SELECT TIMESTAMPDIFF(SECOND,'2018-07-01 09:00:00','2018-07-04 12:00:00') FROM `student`

解       析:查询学生表的创建时间和修改时间的秒差(SECOND:秒   /   MINUTE:分   /   HOUR:时   /   DAY:天   /   MONTH:月   /   YEAR:年) 注       意:create_time 90

解       析:查询学生成绩表每科超过90分的最高分,GROUP BY `subject_id` 用于每个科目分组 ,HAVING MAX(score) > 90 用于过滤超过90分的条件 注       意:分组、过滤


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3