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

单行函数

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

  • 数据存储的区别,不同的数据库有不同的数据存储方案;
  • 不同的数据库支出的类型也是不同的。大部分关系型数据库不支持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

范例:求模计算

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容