常用的数据库函数_数据库中自定义函数

常用的数据库函数_数据库中自定义函数1.COALESCE();很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用。返回其参数中第一个非空表达式语法:COALESCE(expression[,…n])如果所有参数均为NULL,则COALESCE返回NULL。至少应有一个Null…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1.COALESCE();

很多人知道ISNULL函数,但是很少人知道Coalesce函数,人们会无意中使用到Coalesce函数,并且发现它比ISNULL更加强大,其实到目前为止,这个函数的确非常有用。

返回其参数中第一个非空表达式 

语法: 

COALESCE ( expression [ ,...n ] ) 

如果所有参数均为 NULL,则 COALESCE 返回 NULL。至少应有一个 Null 值为 NULL 类型。尽管 ISNULL 等同于 COALESCE,但它们的行为是不同的。包含具有非空参数的 ISNULL 的表达式将视为 NOT NULL,而包含具有非空参数的 COALESCE 的表达式将视为 NULL 下面我们来看一个例子: 
expression [ ,...n ] ) 

如果所有参数均为 NULL,则 COALESCE 返回 NULL。至少应有一个 Null 值为 NULL 类型。尽管 ISNULL 等同于 COALESCE,但它们的行为是不同的。包含具有非空参数的 ISNULL 的表达式将视为 NOT NULL,而包含具有非空参数的 COALESCE 的表达式将视为 NULL

下面我们来看一个例子:

Jetbrains全家桶1年46,售后保障稳定

SELECT COALESCE(NULL,NULL,NOW()) TIME;

结果如下:

常用的数据库函数_数据库中自定义函数

第一第二个值都为null,则返回第三个不为null的值返回当前时间;

2.DECODE();

用法1: 
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ……
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF

用法2:

decode(字段或字段的运算,值1,值2,值3)

 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
 当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

其实它的用法和case when then else end 有点像,但是语法更简洁;

下面再给大家举个例子:

person表中有如下数据

常用的数据库函数_数据库中自定义函数

SQL:

SELECT NAME,DECODE(sex,1,"男",2,"女","太监") FROM person;
结果想必就不用我说了吧。

有一点需要大家注意的是MySQL的docode函数用法和oracle有所不同,这里就不一一赘述了…

3.SUBSTRING();

SUBSTRING ( expression, start, length ) 

参数 
expression 
字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。 

start 
整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置,索引是从1开始。 

length 
整数或可以隐式转换为 int 的表达式,指定子字符串的长度。经测试,暂且发现只能是非负数。

返回值

1.如果 expression 是一种支持的二进制数据类型,则返回二进制数据,这种情况我们暂且不讨论。
2.如果 expression 是一种支持的字符数据类型,则返回字符数据。

(1)如果 start的索引是从1开始,则从表达式的第一个字符开始进行字符串截取,从2开始就从表达式的第二个字符开始截取,以此类推。

例如:

 select SUBSTRING(‘abcde’,1,2) 返回结果 ab

 select SUBSTRING(‘abcde’,2,3) 返回结果 bcd

 select SUBSTRING(‘abcde’,1,0) 返回结果为空

 select SUBSTRING(‘abcde’,0,8) 返回结果为abcde,注意后面没有空格了。

(2) 如果start的索引是从小于1(0或负数)开始,则返回长度等于从1开始,截取长度为 length – ((start – 1)的绝对值), 如果这个差为负数就返回空

画个图理解这种情况(比如SUBSTRING(‘abcde’,0,2)返回a):

坐标:0       1         2     3     4    5
内容:空      a                b         c     d      e
截取:从此截取        截取到这里结束

4.ROUND();

ROUND ( numeric_e-xpression , length [ , function ] )

这个比较简单,举个例子相信大家就能明白:

SELECT ROUND(12.111,2);

 

常用的数据库函数_数据库中自定义函数

SELECT ROUND(12.111,1);

常用的数据库函数_数据库中自定义函数

好的,今天的学习到此结束。。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210757.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RSA算法原理——(3)RSA加解密过程及公式论证

    RSA算法原理——(3)RSA加解密过程及公式论证上期(RSA简介及基础数论知识)为大家介绍了:互质、欧拉函数、欧拉定理、模反元素这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的过一遍。一、目前常见加密算法简介二、RSA算法介绍及数论知识介绍三、RSA加解密过程及公式论证二、RSA加解密过程及公式论证今天的内容主要分为三个部分:rsa密钥生成过程:讲解如何生成公钥和私钥rs…

    2022年5月29日
    38
  • 一篇文章弄懂Java多线程基础和Java内存模型

    一篇文章弄懂Java多线程基础和Java内存模型文章目录一、多线程的生命周期及五种基本状态二、Java多线程的创建及启动1.继承Thread类,重写该类的run()方法2.通过实现Runnable接口创建线程类3.通过Callable和Future接口创建线程三、Java内存模型概念四、内存间的交互操作五、volatile和synchronized的区别写在前面:提起多线程大部门同学可能都会皱起眉头不知道多线程到底是什么、什么时候可以用到、用…

    2022年5月22日
    38
  • 一文搞定BP神经网络——从原理到应用(原理篇)「建议收藏」

    一文搞定BP神经网络——从原理到应用(原理篇)「建议收藏」神经网络结构以及前向传播过程损失函数和代价函数反向传播1矩阵补充知识11矩阵求梯度12海塞矩阵13总结2矩阵乘积和对应元素相乘3反向传播原理四个基础等式4反向传播总结41单样本输入公式表42多样本输入公式表本文小结Hello,对于神经网络的原理,我入门了好多次,每次都觉得懂了,但是其实内部原理并没有理解透彻。经过不懈努力,终于茅塞顿开,遂总结此文。本

    2022年7月20日
    13
  • python中多个if语句用法_if语句的用法

    python中多个if语句用法_if语句的用法python中if语句用法以下实例通过使用if…elif…else语句判断数字是正数、负数或零:推荐:《python教程》实例(Python3.0+)#Filename:test.py#authorby:www.php.cn#用户输入数字num=float(input(“输入一个数字:”))ifnum>0:print(“正数”)elifnum==…

    2022年9月26日
    6
  • java静态内部类和非静态内部类的区别_静态内部类有什么问题

    java静态内部类和非静态内部类的区别_静态内部类有什么问题一、非静态内部类:1、变量和方法不能声明为静态的。(类的编译顺序:外部类–静态方法或属性–内部类,如果内部类声明为静态的,造成编译顺序冲突。个人理解)2、实例化的时候需要依附在外部类上面。比如:B是A的非静态内部类,实例化B,则:A.Bb=newA().newB();3、内部类可以引用外部类的静态或者非静态属性或者方法。二、静态内部类:1、属性和方法可以声明为静态的或者非静态的…

    2022年10月11日
    3
  • latex连乘符号怎么写_latex属于符号怎么打

    latex连乘符号怎么写_latex属于符号怎么打求和符号:\sum_{i=1}^{n}左侧的“\sum”代表求和符号,中间的"_{i=1}"代表下标是“i=1”,右边的"^{n}"代表上标是“n”。 连乘符号:\prod_{i=1}^{n}连乘除了最前面的词不一样,别的都和求和符号一样,下面再说求和符号其他形式。连乘都可以参考 求和符号不加上标\sum_{i=1}求和符号…

    2022年10月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号