博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL笔记之常用用法整理手册
阅读量:2040 次
发布时间:2019-04-28

本文共 1982 字,大约阅读时间需要 6 分钟。

文章目录

继上一篇博客之后,我再写一篇Mysql版本的

PS:本博客收录自己工作中遇到学到的一些mysql技能,有时间就更新整理一下

(1) str_to_date

oracle有to_date函数,Mysql的格式是str_to_date(‘2019-02-12 11:34:32’, ‘%Y-%m-%d %H:%i:%s’)

(2) 递归查询

oracle实现递归查询的话,就可以使用start with … connect by,mysql并没有通过类似函数,解决方法是通过自定义函数的方法,具体可以参考我这篇博客

https://blog.csdn.net/u014427391/article/details/87297884

(3) 排序问题

oracle做数据排序的时候,有时候可以用nulls first或者nulls last将null值排在最前或者最后。

不过迁到Mysql的话,mysql并没有提供类似函数,所以要怎么实现?下面给出解决方法:
null值排在最后,用Mysql的IF和ISNULL函数。如果为空返回1,否返回0

select * from A order by IF(ISNULL(a),1,0),a desc

1
null值排在最前,用Mysql的IF和ISNULL函数。如果为空返回0,否返回1

select * from A order by IF(ISNULL(a),0,1),a desc

1
具体可以参考我写的这篇博客:https://blog.csdn.net/u014427391/article/details/87297068

(4) 条件函数

条件函数比如case…when在mysql、Oracle都是有的,除了case…when这最基本之外,Oracle有nvl、nvl2和decode函数,Mysql没有提供类似decode的函数,不过有类似Oracle的nvl和nvl2函数。

Oracle

介绍一下oracle的nvl函数和nvl2函数。

nvl函数

nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1。

nvl2函数

nvl2函数的是nvl函数的拓展,基本语法为nvl2(E1,E2,E3),意思是E1为null,就返回E3,不为null就返回E2。
nvl函数具体可以参考我这篇博客:https://blog.csdn.net/u014427391/article/details/84996009

Mysql

上面是Oracle的做法,mysql的做法可以用IFNULL(E1,E2)函数,其功能类似与Oracle的nvl函数。意思是E1为null就返回E2,不为null就返回E1。

Mysql IF函数,这里可以和Oracle的nvl2函数做对比,不过差别比较大了,nvl2函数是针对数值为空的情况,IF函数是针对自定义条件的

格式:IF(Condition,A,B)

意义:当Condition为TRUE时,返回A;当Condition为FALSE时,返回B。

(5) 列转行函数

Oracle列转行函数可以用vm_comcat函数,mysql的用concat_ws函数

使用方法:
CONCAT_WS(separator,str1,str2,…)
eg:

select concat_ws(',','11','22','33');

Oracle列转行函数的可以参考我以前博客:https://blog.csdn.net/u014427391/article/details/84981114

列转行函数不兼容问题:https://blog.csdn.net/u014427391/article/details/84867390

(6) find_int_set

Mysql有提供一个find_int_set函数,其语法为FIND_IN_SET(str,strlist)

  • str: 要查询的字符串
  • strlist: 序列,用逗号分隔,比如(1,2,3)

这个函数只要用于查询的时候,查询字符串是否在strlist序列里,like查询只是广泛的模糊匹配

(7) 类型转换函数

mysql的类型转换函数为cast(字段 as 类型),

mysql支持的类型有

  • CHAR[(N)] 字符型
  • DATE 日期型
  • DATETIME 日期和时间型
  • DECIMAL float型
  • SIGNED int
  • TIME 时间型

(8) 合并更新

Oracle实现merge into实现,意思是数据表已经有数据就更新,没数据就新增

mysql的函数是replace into,语法

replace into 表格(字段,...) values(数据,...)
你可能感兴趣的文章
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>
【Pyton】【小甲鱼】类和对象
查看>>
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
LoadRunner中获取当前系统时间方法
查看>>
Python几种并发实现方案的性能比较
查看>>
【实战】10.10.1.9考试系统代码完成一次答题代码备份
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【JMeter】如何用JMeter进行压力测试
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>