今天Amy着重为大家讲解一下关于函数的一些硬核知识,也是本文中非常重要的一个章节,记得认真看(dianzan)哦~

第四节、函数

4.1 字符串连接函数

MySQL 数据库中字符串连接方法,需使用 CONCAT() 或 CONCAT_ WS()函数,语法如下:

CONCAT(string1,string2,…)

CONCAT_ WS(separator,string1,string2,…)

MySQL 中的 CONCAT 和 Oracle 中的 CONCAT 不同,可以接受任意多个参数,可以较为简

单的替代’||'符号的作用。MySQL 也可以通过 sql_mode 配置双管道符作为字符串连接运算符,

但不推荐这样做。

4.2 字符串长度统计函数

LENGTH(string) #返回 string 字符串所占的字节数

CHAR_LENGTH(string) #返回 string 字符串中的字符个数

统计字符个数,就不区分是汉字还是字母或数字,也跟字符集没有关系,若统计的是字

节数,则由字符是汉字、字母或数字类型,以及字符集共同决定。

4.2.1 特别说明

我们所有的 MySQL 数据库都将会采用统一的 UTF8 编码,所以一个汉字占 3 个字节,

中文输入法(或称全角输入模式)下的字母或数字占 3 个字节;英文输入法(或半角输入法

模式)下一个字母或数字占 1 个字节。

4.3 字符串判断函数

IF(exp1,exp2,exp3):若是 exp1 为真,返回 exp2;若是 exp1 为假,返回 exp3;

IFNULL(exp1,exp2):若是 exp1 IS NOT NULL,返回 exp1,否则返回 exp2;

NULLIF(exp1,exp2):若是 exp1=exp2,返回 NULL,否则返回 exp1;

4.4 字符串替换函数

LTRIM(exp1):去掉 exp1 中字符串开头的空格;

RTRIM(exp1):去掉 exp1 中字符串结尾的空格;

TRIM(exp1):去掉 exp1 中的开头和结尾的空格;

TRIM(exp2,exp1):去除掉 exp1 中存在的字符串 exp2;

4.5 字符串查找函数

SUBSTRING_INDEX(exp1,delim,count)

exp1 为 字 符 串 , delim 为 分 割 符 号 , count 表 示 第 几 个 风 格 符 号 , 例 如 :

SUBSTRING_INDEX(‘热璞科技’,‘.’,1),返回:ali

SUBSTRING(exp1,pos,len)

exp1 为字符串,pos 为位置,len 为长度,例如:SUBSTRING(‘热璞科技’,1,5),返回:ali。

LOCAL(substr,str)

查找 substr 在 str 中的第一个位置,例如:LCOAL(热璞科技’,‘.’),返回:6。

4.6 字母大小写转换函数

UPPER(exp1):把字符串 exp1 转换成大写;

LOWER(exp1):把字符串 exp1 转换成小写;

4.7 数学函数

ABS(value):返回 value 的绝对值,例:ABS(-101),返回:101

FLOOR(value):去掉 value 的小数,例:FLOOR(2013.8),返回:2013

MOD(N,M):返回 N 除以 M 的余数,例:MOD(2013,10),返回:3

ROUND(value):返回 value 的四舍五入值,例:FLOOR(2013.8),返回:2014

ROUND(value,num):保留 num 位小数 value 的四舍五入值,例FLOOR(2013.867,1),返回:2013.9

RAND():返回随机数值

4.8 日期操作函数

获取当前时间函数:NOW()、CURDATE()、CURTIME()

NOW()函数精确到秒, 格式:YYYY-MM-DD HH:MM:SS

CURDATE()函数精确到天, 格式:YYYY-MM-DD

CURTIME()函数提供小时、分钟、秒, 格式:HH:MM:SS

4.8.1 特别说明

从主备数据异步复制的数据安全性角度出发,禁止使用 SYSDATE()函数获取当前时间。

日期数值的加减函数

DATE_ADD(date,INTERVAL expr type)

DATE_ SUB(date,INTERVAL expr type)

常用的几种 type 类型:YEAR、MONTH、DAY、HOUR、MINUTE,其中 expr 可以为

正数或负数,我们在开过程中,一般使用 DATE_ADD()函数,若要做日期减去一个数字的

方式,就使用负数。

MySQL 中不能像 Oracle 那样直接对时间类型进行加减运算,直接使用加减运算符不会

得到符合预期的结果,需要使用函数进行运算。

DATEDIFF(expr1,expr2),是返回 开始日期 expr1 与 结束日期 expr2 之间,相差的天

数 ,返回值为正数或负数。

返回日期某部分信息的函数

YEAR(expr1) 返回日期 expr1 部分的年份;

MONTH(expr1) 返回日期 expr1 部分的月份;

DAY(expr1)返回 expr1 部分的天数;

WEEKDAY(expr1)返回 expr1 对应的星期数字,0 表示星期一,1 表示星期二,其他依次类

推;

4.9 类型转换函数

 日期类型格式转换

字符串转换成日期方式,DATE_FORMAT()或 STR_TO_DATE(),两个函数的格式如下:

DATE_FORMAT(expr1,format)

STR_TO_DATE(expr1, format)

4.9.1 特别说明

STR_TO_DATE()是为兼容 Oracle 数据库对应函数。

常用的日期格式 YYYY-MM-DD HH:MM:SS 对应的 FORMAT 为:%Y-%m-%d %H:%i:%S。

通用类型转换函数

CAST(expr AS type) 则是把 expr 数字或字符串 转换为 type 类型;

CONVERT(expr,type) 则是把 expr 数字或字符串 转换为 type 类型;

CONVERT(expr USING transcoding_name) 则是转换字符串或字段的字符集编码;

日期整型转换函数

UNIX_TIMESTAMP(date_string) 则是将字符串格式表达的日期转换成 INT 无符号类型的整

型数值,例如:

FROM_UNIXTIME(int_value) 则是将用整型数值表达的日期转换成字符串格式的日期,例

如:

IP 地址转换

可以使用 INET_ATON()、INET_NTOA()、INET6_ATON()、INET6_NTOA()实现 IP 地址和

整型值之间的转换。

隐式转换

在不同类型的列之间发生比较或运算时,MySQL 遵循如下规则:

NULL 和 NULL 比较不转换;

字符串和不同的字符串比较,则使用字符串比较;

整型和不同的整型比较,则使用整型比较;

十六进制值和整型以外的类型比较时十六进制值视为二进制字符串;

时间类型和字符串常量比较时,字符串转换为时间类型进行比较;

DECIMAL 类型的比较方式取决于另一个值的类型,如果是整型,则使用 DECIMAL 比

较;如果是浮点型,则使用浮点类型比较。其它情况,使用浮点比较;

4.10 特殊函数

SYSDATE()

原意为获取调用函数时刻的时间,通常在标准化的 MySQL 配置中,会将其修改为 NOW()

的同义词,为 SQL 语句开始执行的时间。从而规避 SYSDATE 带来的复制问题与

sysdate-is-now 参数带来的行为改变导致的潜在的配置不一致风险两个角度考虑,故建议禁

止使用函数 SYSDATE()。

LAST_INSERT_ID()

获取最近成功插入带自增长的表的数据行的自增长 ID 值,在分布式数据库开发当中,因可

能涉及到分布式事务,以及全局自增 ID,因此,禁止使用该函数。

SLEEP()、BENCHMARK()

应用程序中要禁止使用此类函数,及防 SQL 注入方式对待。

UUID()

生产全局唯一 ID 的函数,MySQL 使用通用的算法,算法版本为 1,该函数不能确保绝对不

发生冲突,但是冲突的概率极低。由于 UUID 分布的随机性,非常不适合作为 InnoDB 存储

引擎表的主键或唯一性的标识,非特殊原因或特殊场景不应使用。

GET_LOCK()、RELEASE_LOCK()、IS_FREE_LOCK()、IS_USED_LOCK()

用户锁函数,对于定时调度存储过程,该系列函数可以用于确保只有一个存储过程正在运行

类型的特殊功能,或者控制应用程序单线程运行类型的特殊功能。我们建议不要在分布式数

据库中使用存储过程,因此,也禁止使用此类函数。

4.11 聚合函数

分布式数据库 能够支持聚合函数与 GROUP BY,ORDER BY,HAVING 的使用;也

可以在 JOIN 语句中使用聚合函数。如:

SELECT count(t.id) FROM t LEFT JOIN t1 on t.id=t1.id GROUP BY t.name;

4.11.1 嵌套聚合函数

禁止在分布式数据库中使用 MAX(AVG())、COUNT(DISTINCT)这之类的嵌套聚合函数。

好了,以上就是今天的内容,我们明天再见啦~啵唧~

mysql时间相减得到天数保留两位_【敲黑板!】分布式事务数据库 —-MySQL 数据库开发规范(第四节)...相关推荐

  1. mysql时间相减得到天数保留两位_[转]Mysql日期函数-日期相减返回天数

    MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数. select datediff('2008-08-08', '2008-08-01'); ...

  2. mysql时间相减得到天数保留两位_mysql 中两个日期相减获得 天 小时 分钟 或者 小时:分钟的格式...

    /**有一个需求,要求获得两个日期想减的天数,小时数,分钟数.通过查找资料,于是乎我写出了如下代码,来获得两个字段.*/ IFNULL(CONCAT( IF(aib.`forecast_reply_t ...

  3. mysql时间相减得到天数保留两位_MySQL计算两个日期相差的天数、月数、年数

    MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...

  4. mysql时间相减得到毫秒值_Mysql 字符串、时间、时间戳相互转换,相减获取秒数...

    涉及的函数 date_format(date, format) 函数 unix_timestamp() 函数 str_to_date(str, format) 函数 from_unixtime(uni ...

  5. mysql小数点后保留两位_不会保留小数点位数,做出来的表格难看,巧用ROUND函数解决...

    先提问一下,在Excel中,利用公式计算时,计算出来的结果有时候会有N多位小数,很多同学是不是就直接选择单元格格式设置"数值"保留两位小数点,就OK了.然鹅,有没有细心的同学发现, ...

  6. mysql 时间相减取秒_MySQL两个日期字段相减得到秒的方法

    一.MySQL中两个DateTime字段相减 假定表名为tblName,两个DateTime字段名分别为beginDateTime,endDateTime,以下是相关两个mysql日期字段相减的SQL ...

  7. mysql 日期相减输出天数_SQL是计算两个日期相差多少天数的函数?

    展开全部 SQL是高e5a48de588b662616964757a686964616f31333365633961级的非过程化编程语言,一般针对数据库进行操作. 定义:datediff(day/mo ...

  8. mysql日期相减返回秒_mysql两个日期相减得到秒、分、天

    一.MySQL中两个DateTime字段相减 假定表名为tblName,两个DateTime字段名分别为beginDateTime,endDateTime,以下是相关两个mysql日期字段相减的SQL ...

  9. oracle时间相减得到天数_【数列】从错位相减到阿贝尔变换

    "错位相减法"是高中数学中数列求和的常见方法,在课本中占有一定篇幅,也可以解决一系列的问题,这里笔者来细细地谈一谈这一方法.(文章前一半偏简单) 等比数列求和问题 考虑这个求和问题 ...

最新文章

  1. Linux删除整行命令
  2. mongodb 查询内嵌文档
  3. vm和openstack_最佳新OpenStack技巧和窍门
  4. 因算法裁定“效率低下”,近150名员工遭解雇
  5. 百度经纬度与高德经纬度互转
  6. DCT和IDCT原始公式计算
  7. 信号隔离器的功能原理是什么?
  8. 初学python--空函数、返回多个值
  9. 如何避免自high式分享
  10. 京东“百亿补贴”提前20小时上线,电商价格战开打; iPhone 15 Pro玻璃面板泄露;凹语言 0.5.0发布|极客头条
  11. 20190904携程机试
  12. python缩进可以用在任何语句之后_Python程序中,缩进表达所属关系,在缩进的前一行最后,需要使用符号 Python 语句中增...
  13. 4G模块-EM05驱动调试分享-02(Android上层更改)
  14. RxSwift 的简单使用
  15. JustLaws 法律文库贡献指南
  16. 爱情保卫战经典语录全集
  17. 腾讯文档服务器异常怎么回事,腾讯文档怎么编辑不了 编辑不了解决方法
  18. 网络编程socket之connect函数
  19. 浅谈虚幻4引擎游戏客户端服务器及如何编译游戏专用服务器
  20. java枚举类循环_(转载)java 枚举 循环遍历以及一些简单常见的使用

热门文章

  1. c++ 内存管理_Python Bindings - 从 Python 调用 C/C++
  2. satd残差_RDO、SAD、SATD、λ相关概念【转】
  3. 总有一些人在祖国需要的时候挺身而出
  4. 辞去美国终身教职!顶尖学者,加盟“双一流”高校
  5. 复旦大学教授周文:沉迷数学让中国经济学失去思想
  6. 两届诺贝尔文学奖得主将同时公布
  7. redis☞ python客户端
  8. Springmvc架构详解
  9. 可视化的状态机(FSM)
  10. 阿里云李克:边缘云技术发展与实践