首页 > 数据库 >Mysql--函数

Mysql--函数

时间:2023-05-18 15:12:40浏览次数:43  
标签:set 函数 -- 0.00 Mysql sec mysql select

时间,日期相关函数参考:https://www.cnblogs.com/Xinenhui/p/16348570.html

 

一、 基本函数

1.1 count()

统计数据表中包含的记录行的总数

语法:

SELECT COUNT(*) FROM t1;
SELECT COUNT(字段名) FROM t1;

用法:

  • count(*)    统计表中的总行数,无论某列有值或者空值,包含null
  • count(1)    对表中第一列的值的行数进行计算,忽略null列
  • count(字段)    计算指定列的总行数,忽略null
  • count(distinct 字段)    计算指定列不重复数值的总行数,即去重

对统计结果进行排序(聚合后的值是无序的):

select count(num) from t1 group by num order by count(num) desc;
select count(num) as 'test' from t1 group by num order by test desc;

 

 

二、判断函数

2.1 case()

case()是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式中的一个,分为简单函数与搜索函数,都可以实现相同的功能,但简单函数在功能方面没有搜索函数全面,比如写判断式。

2.1.1 简单函数
CASE  <表达式>
   WHEN <值1> THEN <操作>
   WHEN <值2> THEN <操作>
   ...
   ELSE <操作>
END

将 <表达式> 的值 逐一和 每个 when 跟的 <值> 进行比较
如果跟某个<值>想等,则执行它后面的 <操作> ,如果所有 when 的值都不匹配,则执行 else 的操作
如果 when 的值都不匹配,且没写 else,则会报错

2.1.2 搜索函数
CASE
    WHEN <条件1> THEN <命令>
    WHEN <条件2> THEN <命令>
    ...
    ELSE commands
END

每个 <条件> 都是独立的,可以用 and 来连接多个查询条件
不同 <条件> 是互不关联且互不影响的

2.1.3 示例
#查询monitor_item_name字段的告警类型并赋值
select
  *,case
    monitor_item_name
    when '容器磁盘使用率告警' then 1
    when '中间件' then 2
    else 3
  end
from
  test;

 

#根据表达式进行判断并赋值
select
  *,case
    when monitor_item_name = '容器磁盘使用率告警' then 1
    when monitor_item_name = '中间件' or monitor_item_name = 'RDS云监控' then 2
    else 3
  end
from
  test;

 

2.2 if()

IF()函数在条件为TRUE时返回一个值,如果条件为FALSE则返回另一个值

语法:

IF(condition, value_if_true, value_if_false)
  • condition:判断条件
  • value_if_true:如果condition的结果为TRUE,返回该值
  • value_if_false:如果condition的结果为FALSE,返回该值

示例:

if(monitor_item_name = '容器磁盘使用率告警', 1, 0) as 磁盘,
if(alarm_source_cn = '中间件' or alarm_source_cn = 'RDS云监控',1,0) as 中间件

 

三、字符串函数

3.1 substring_index()

按关键字截取字符串

语法:

substring_index(input,delim,count)
  • input:要截取的字符或字段
  • delim:分隔符
  • count:计数,若为正数,则从左往右数,截取第N个分隔符左边的全部数据;若为负数,则从右往左数,截取第N个分隔符右边的全部数据

例:

test=www.nginx.com

substring_index(test,'.'1)    =>    www
substring_index(test,'.'-1)    =>    com

substring_index(substring_index(test,'.'2),'.'1)    =>    nginx

 

3.2 concat()

字符串拼接函数,可连接多段

mysql> select concat(psa_id,'%') from ops_psas limit 1;
+--------------------+
| concat(psa_id,'%') |
+--------------------+
| 35360%             |
+--------------------+
1 row in set (0.00 sec)

mysql> select concat(psa_id,'%','w') from ops_psas limit 1;
+------------------------+
| concat(psa_id,'%','w') |
+------------------------+
| 35360%w                |
+------------------------+
1 row in set (0.00 sec)

mysql> 

 

3.3 group_concat()

作用:将函数内的字段拼接起来,默认分隔符为,

语法:

separator:指定分隔符

distinct:去重

order by:排序

GROUP_CONCAT([DISTINCT] column1 [ORDER BY column2 ASC\DESC] [SEPARATOR seq])

示例:

mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    2 | jer  |
|    1 | tom  |
+------+------+
2 rows in set (0.00 sec)

mysql> select group_concat(id,name separator ';') from t1;
+-------------------------------------+
| group_concat(id,name separator ';') |
+-------------------------------------+
| 2jer;1tom                           |
+-------------------------------------+
1 row in set (0.00 sec)

mysql> select group_concat(distinct id,name order by id separator ';') from t1;
+----------------------------------------------------------+
| group_concat(distinct id,name order by id separator ';') |
+----------------------------------------------------------+
| 1tom;2jer                                                |
+----------------------------------------------------------+
1 row in set (0.00 sec)

mysql> 

 

3.4 position()

返回字符串中第一次出现的子字符串的位置,如果在原始字符串中找不到子字符串,则此函数返回0,不区分大小写,且当任意一个参数为 NULL 时,函数将返回 NULL

语法: position(substring IN string) 

  • substring:必需项,要在字符串中搜索的子字符串
  • string:必需项,要搜索的原始字符串

实例:

MySQL [sredev]> select position("he" in "Hello");
+---------------------------+
| position("he" in "Hello") |
+---------------------------+
|                         1 |
+---------------------------+
1 row in set (0.00 sec)

MySQL [sredev]> select position("WO" in "Hello world");
+---------------------------------+
| position("WO" in "Hello world") |
+---------------------------------+
|                               7 |
+---------------------------------+
1 row in set (0.00 sec)

MySQL [sredev]> select position(1 in "Hello world");
+------------------------------+
| position(1 in "Hello world") |
+------------------------------+
|                            0 |
+------------------------------+
1 row in set (0.00 sec)

MySQL [sredev]> select position(null in "Hello world");
+---------------------------------+
| position(null in "Hello world") |
+---------------------------------+
|                            NULL |
+---------------------------------+
1 row in set (0.00 sec)

MySQL [sredev]> 

也可以用在where条件里,类似于like

MySQL [sredev]> select * from alarm_lists where position('rec' in product)!=0 limit 1\G

 

四、数值函数

4.1 round()

数值保持小数点后几位

mysql> select round(12.343435,2);
+--------------------+
| round(12.343435,2) |
+--------------------+
|              12.34 |
+--------------------+
1 row in set (0.00 sec)

 

 五、类型转换函数

5.1 cast()

将任何类型的值转换为具有指定类型的值,以便在WHERE,JOIN和HAVING子句中进行比

语法:

CAST(expression AS TYPE);

TYPE支持的类型:

  • char(字符)
  • date(日期)
  • time(时间)
  • datetime(日期时间)
  • decimal(浮点型 float)
  • signed(整数 int)

示例:

两数相除,结果类型转为浮点型,decimal(m,n),m表示精度,即小数点左右两边相加的位数;n表示小数位数,即保留多少为小数;m>=n

mysql> select cast(367132728 / 367132745 as decimal(13,12));
+-----------------------------------------------+
| cast(367132728 / 367132745 as decimal(13,12)) |
+-----------------------------------------------+
|                                0.999999953000 |
+-----------------------------------------------+
1 row in set (0.00 sec)

mysql> 

 

 六、比较函数

 6.1 greatest(),least()

作用:从给定参数中返回最大值或最小值(max()是纵向比较,而greatest()是横向比较)

语法:

GREATEST(value1, value2, ...);
LEAST(value1,value2,...);

注:

  • 如果任何参数为NULL,则两个函数都将立即返回NULL,而不进行任何比较,可用IFNULL函数将NULL视为零来执行数字比较
  • 如果在INT或REAL上下文中使用函数,或者所有参数都是整数值或REAL值,那么它们将分别作为INT和REAL来比较
  • 如果参数由数字和字符串组成,则函数将它们作为数字进行比较
  • 如果至少一个参数是非二进制(字符)字符串,则函数将将参数作为非二进制字符串进行比较
  • 在所有其他情况下,函数将参数作为二进制字符串进行比较

示例:

mysql> select greatest(20,6,45,788,32445);
+-----------------------------+
| greatest(20,6,45,788,32445) |
+-----------------------------+
|                       32445 |
+-----------------------------+
1 row in set (0.00 sec)

mysql> select greatest(20,6,45,788,32445,ifnull(null,0));
+--------------------------------------------+
| greatest(20,6,45,788,32445,ifnull(null,0)) |
+--------------------------------------------+
|                                      32445 |
+--------------------------------------------+
1 row in set (0.00 sec)

mysql> 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:set,函数,--,0.00,Mysql,sec,mysql,select
From: https://www.cnblogs.com/Xinenhui/p/16349464.html

相关文章

  • AI 绘画 - 0 成本在线体验 AI 绘画的魅力
    合集-StableDiffusion(3) 1.AI绘画咒语入门-StableDiffusionPrompt语法指南【成为初级魔导士吧!】04-222.AI绘画基础-细数StableDiffusion中的各种常用模型【......
  • javascript创建数组
    javascript数组:vararray=[]等于创建一个数组array[0]代表给数组的第一个位置上赋值,值为32array[5]代表给数组的第六位置上赋值。值为3在位置0,1,2,5位置上都赋值,维度3,4位置上未赋值,但有一栏占位,所以会导致array.lenth获取数组的长度为6dor(vari=0;<array.lenth;i++){}代表的......
  • Python从零到壹丨图像增强的顶帽运算和底帽运算
    摘要:这篇文章详细介绍了顶帽运算和底帽运算,它们将为后续的图像分割和图像识别提供有效支撑。本文分享自华为云社区《[Python从零到壹]四十九.图像增强及运算篇之顶帽运算和底帽运算》,作者:eastmount。数学形态学(MathematicalMorphology)是一种应用于图像处理和模式识别领域的新......
  • zabbix加个机器人
    [root@zabbix~]#dockerexec-itzabbix-docker-zabbix-server-1/bin/bashbash-4.4$cd/usr/lib/zabbix/alertscripts/bash-4.4$lszabbix-dingding.shzabbix-qiyeweixin.pyzabbix-qiyeweixin.shbash-4.4$catzabbix-dingding.sh#!/bin/bashto=$1subject=$2text=$3cu......
  • PowerShell-将word另存为pdf
    $folderPath="D:\工作\temp\2023年4月19日"$folderPathOut="D:\工作\temp\2023年4月19日"$wordFiles=Get-ChildItem-Path$folderPath-Filter"*.docx"try{Get-Process-Name"*word*"|Stop-Process#避免之前运行失败的......
  • 主流原型设计工具介绍
    一、原型设计工具的使用方法与特点对比原型工具使用方法特点墨刀使用者可以通过创建项目、添加页面、设计界面和设置交互来快速设计应用程序和网页原型。它具有实时协作功能,支持多人同时编辑和评论,方便团队协作。墨刀还提供丰富的交互设计选项,可以创建出丰富的交互......
  • Echrtas 实时渲染
    1.实时曲线图业务场景:每个时间节点产生一个数据,且时间节点间隔不固定坐标轴配置:X轴类型设定为time,Y轴类型设定为value数据格式:每个节点的数据都是一个数组,第一个数组为时间,第二个元素为值//渲染参数varoption={ti......
  • [SEO知识讲解] 标题关键词顺序能影响排名吗?
    本文转载自:[SEO知识讲解]标题关键词顺序能影响排名吗?更多内容请访问钻芒博客:https://www.zuanmang.net与seo同行聊天,内容是关于网站标题中的关键词顺序能否影响关键词排名,有的说会影响,有的说不会影响,各有各的理由。从百度官方的回复来看,是否定答案。对于百度的某些官方说法,我一......
  • [SEO知识讲解] 百度推出惊雷算法SEO大神100条实战经验(二)!(完结)
    本文转载自:[SEO知识讲解]百度推出惊雷算法SEO大神100条实战经验(二)!(完结)更多内容请访问钻芒博客:https://www.zuanmang.net[SEO知识讲解]百度推出惊雷算法SEO大神100条实战经验(一)接后续:四、关键词研究57、关键字是你的指南针——如果你不了解你的关键词,你不知道你的关键词......
  • [SEO知识讲解] 百度推出惊雷算法
    本文转载自:[SEO知识讲解]百度推出惊雷算法更多内容请访问钻芒博客:https://www.zuanmang.net利用点击等用户行为,来提升网站关键词排名,已经是seo行业公开的秘密。对于这个行为,百度是不会不知晓的,百度准备推出惊雷算法,来打击刷点击作弊行为,就是在这个背景下产生的。据相关渠道获悉......