单行函数_字符串函数_数值函数

单行函数

现在大部分关系型数据库的操作都是类似的,唯一的区别,个人认为有如下几点。

  • 数据存储的区别,不同的数据库有不同的数据存储方案;
  • 不同的数据库支出的类型也是不同的。大部分关系型数据库不支持Boolean值。
  • 不同的数据库有不同的支持韩束。意义不大,但是很重要。意义在于跨数据库开发。所以意义不大。

大部分的函数都是不需要去可以记忆的。而且对于函数可以直接通过网络查询。在Oracle之中,针对于系统函数定义的基本格式:返回数据类型 函数名称(数据 | 列名称),返回的数据类型基本上只有三类:

  • 字符串(VARVHAR2)
  • 数组(NUMBER)
  • 日期(DATE):这一点oracle的日期比较mysql比较特殊,oracle的日期是由日期+时间组成。
    根据功能,在oracle之中针对单行函数分为以下几类
    1.字符串函数
    2.数值函数
    3.日期函数:避免闰年闰月问题
    4.转换函数
    5.通用函数
    用的时候拿出来就行了不用强记。

字符串函数

字符串函数主要功能是进行字符串的处理,例如:转大写,转小写,计算长度等等。常见字符串的函数有如下几种:

序号介绍函数体
01转大写函数UPPER(数据 | 列)
02转小写函数LOWER(数据 | 列)
03首字母大写函数INITCAP(数据 | 列)
04计算字符串长度LENGTH(数据 | 列)
05字符串截取字符串SUBSTR(数据 | 列,截取点[,长度])
06字符串替换REPLAcE(要替换的数据 | 列 , 替换数据)

如果现在要想进行以上的函数验证,在oracle里面必须要明确的写出完整的SQL语句。(何为完整,必须有SELECT与FROM),但是如果真的这么使用了,就会有一个问题:
SELECT DISTINCT UPPER('HELLO') FROM emp;如果这样使用的话,就跟查询常量没什么区别了。所以
很明显,直接使用一张实体表进行查询是没有任何意义的,所以这个时候方便做法我么可以这么进行。我们可以直接使用oracle内部提供的一张虚拟表完成。这张表的名字为dual。
SELECT UPPER('hello') FROM dual
以上就完成了函数的验证(直接使用真是表的话,有可能数据量很大,时间长,做了没有意义的查询,所以使用oracle提供的虚拟表进行验证)
为什么要有这些函数呢?
1.在进行数据保存操作的时候,必须考虑到一种实际的情况:用户在进行数据添加的时候,未必会正确使用大小写,如在根据姓名查询的时候,用户输入的数据很少会考虑采用大写字母。

《单行函数_字符串函数_数值函数》 图片.png

用户输入的时候,很少会手动切换大写的SMITH,这种情况下,**
为了保证数据查询的准确性,就需要将用户输入的内容自动变为大写字母保存,此时就可以使用UPPER()函数,来解决设计问题。
即:SELECT * FROM emp WHERE ename = UPPER('&inputname') ;
在很多系统设计的时候都没有考虑用户输入的用户名大小写问题,因为在用户注册的时候都是用了UPPER()函数将用户名变为了大写字母。
2.lower函数,场景
查询所有雇员姓名,要求姓名的字母采用小写字母表示。

SELECT LOWER(ename) FROM emp ;

这句话就是,从emp表中找到所有的ename数据列对应的数据行,然后再将所有的ename变为小写字母的形式。

3.将所有雇员名称的首字母变为大写处理
SELECT INITCAP(ename) FROM emp ;

4.替换函数

《单行函数_字符串函数_数值函数》 图片.png

《单行函数_字符串函数_数值函数》 图片.png

5.计算字符串长度

范例:查询出每个雇员的姓名、 姓名的长度。

《单行函数_字符串函数_数值函数》 图片.png

《单行函数_字符串函数_数值函数》 图片.png

对于数据行的筛选在WHERE子句中执行。

SELECT length(ename) nl FROM emp WHERE ength(ename) = 5 ;
WHERE在SELECT之前执行,所以无法使用”nl”这个别名。

6.字符串函数里面最有意思的就是一个字符串截取函数:SUBSTR();

主要用法:

1.由指定索引截取到结尾。(oracle中字符串开始的值为1,但是如果设置为0则与1一样。)

SELECT SUBSTR(‘hellowold’,5) FROM dual;什么叫5呢?从一开始数到第5个。即从第五个截取到所有。

SELECT SUBSTR('helloworld',6,2)即从6开始截取2个。

从零开始取五个与一开始取五个。结果没有区别。

索引的值也可以为负数,表示由结尾开始的指定索引开始。

《单行函数_字符串函数_数值函数》 图片.png

输出为world。

范例:

《单行函数_字符串函数_数值函数》 图片.png

《单行函数_字符串函数_数值函数》 图片.png

如果没有负数,就需要我们自己去计算截取点(通过计算出长度然后…)

数值函数

数值函数的功能主要是进行一些数字的操作,提供有如下三种常见的操作:
1.ROUND(数据 | 列 [,保留小数位]):进行四舍五入处理。重点
2.TRUNC(数据 | 列 [,保留小数位]):进行数据截取-非四舍五入不进位。
3.MOD(数据 | 列 ,数据 | 列 …):求余数。

《单行函数_字符串函数_数值函数》 图片.png

《单行函数_字符串函数_数值函数》 图片.png

只有当经过FEOM与WHERE限定之后,这样就会找到所有你需要的数据行,SELECT是对挑出数据列或者对经过前步找到的数据进行计算。比如单行函数,四则运算,去重复,别名等等。

范例:数据截取:

《单行函数_字符串函数_数值函数》 图片.png

范例:求模计算

    原文作者:糖砂西红柿
    原文地址: https://www.jianshu.com/p/5fffd7761dd2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞