总结一些Oracle中常用的单记录函数。

1.0 NVL()

作用:从两个表达式返回一个非NULL值

用法:NVL(表达式1, 表达式2)

如果表达式1的结果不为NULL,返回表达式1的结果;如果表达式1的结果为NULL,返回表达式2的结果。

引申:表达式1的结果为NULL,返回表达式2的结果,而表达式2的结果为NULL,则最终返回NULL,可以得出一个伪结论是“如果表达式1和表达式2的结果都为NULL,则返回NULL”。

NVL(123, 456) // 结果是123

1.1 NVL2()

作用:从三个表达式中返回一个

用法:NVL(表达式1, 表达式2, 表达式3)

如果表达式1的结果是NULL,返回表达式3的结果;如果表达式1的结果不为NULL,返回表达式2的结果。

NVL2(NULL, 123, 456) // 结果是456
NVL2(123, 456, 789) // 结果是456

2.0 LOWER()

作用:将字符串中的大写字母转为小写

用法:LOWER(字符串)

3.0 UPPER()

作用:将字符串中的小写字母转为大写

用法:UPPER(字符串)

4.0 SYS_GUID()

作用:以16位RAW类型值形式返回一个全局唯一的标识符

用法:SYS_GUID()

常用作生成id。

SELECT SYS_GUID() ID FROM dual // 直接使用,结果是乱码
SELECT RAWTOHEX(SYS_GUID()) ID FROM dual // 结果是数字和大写字母组合的字符串
SELECT LOWER(SYS_GUID()) ID FROM dual // 转成小写

5.0 LENGTH()

作用:按字符取字符串长度

用法:LENGTH(字符串)

1个中文、英文字母、数字、中文符号、英文符号、全角符号、空格都算1个字符。

LENGTH('你好吗') // 结果是3

5.1 LENGTHB()

作用:按字节取字符串长度

用法:LENGTH(字符串)

1个中文、全角符号是2个字节;1个英文字母、数字、英文符号、空格是1个字节。

LENGTHB('你好吗') // 结果是6

ORACLE中函数后带"B"的都是以字节为单位的。

6.0 TRIM()

作用:删除两边空格或指定字符

用法:TRIM(删除方向 要删除的指定字符 FROM 源字符串)

删除方向和要删除的指定字符为可选参数,当要使用它们时,FROM关键字必须。

删除方向有三种:leading(从字符串的头开始删除)、trailing(从字符串的尾部开始删除)、both(从字符串两边删除)。不指定删除方向,则默认是both。

要删除的指定字符只能是一个字符,不能是字符串。不指定要删除的指定字符,则默认是空格。

TRIM()只能删除半角空格。

TRIM(BOTH '' FROM '') // 结果是212

6.1 LTRIM()

作用: 删除左边空格或指定字符串中的所有字符

用法:LTRIM(源字符串, 要删除的指定字符串)

要删除的指定字符串为可选参数,不指定默认是空格。

TRIM('', '') // 结果是33213。删掉了左边所有的1和2

6.2 RTRIM()

作用:删除右边空格或指定字符串中的所有字符

用法:RTRIM(源字符串, 要删除的指定字符串)

要删除的指定字符串为可选参数,不指定默认是空格。

TRIM('', '') // 结果是2332。删掉了右边所有的1和3

7.0 REPLACE()

作用:替换字符串中的指定字符串(全部替换)

用法:REPLACE(源字符串, 目标字符串, 替换的字符串)

替换的字符串为可选参数,不指定默认是去除。

REPLACE('', '') // 结果是22,1全部被替换了

8.0 LPAD()

作用:按字节从左边对字符串使用指定的字符进行填充

用法:LPAD(源字符串, 填充后的字符串长度, 填充的字符串)

填充的字符串为可选参数,不指定默认为空格。

如果填充后的字符串长度比源字符串长度要短,函数会将源字符串从左到右截取成符合填充后的字符串长度的字符串。

LPAD('APPLES', 5) // 结果是APPLE

如果填充的字符串长度 > 待补长度,填充的字符串也会被截取后再进行填充,相反则会不断重复填充至待补长度为0。

LPAD('APPLES', 10, '') // 结果是1231APPLES

9.0 RPAD()

作用:按字节从右边对字符串使用指定的字符进行填充

用法:RPAD(源字符串, 填充后的字符串长度, 填充的字符串)

填充的字符串为可选参数,不指定默认为空格。

如果填充后的字符串长度比源字符串长度要短,函数会将源字符串从左到右截取成符合填充后的字符串长度的字符串。

RPAD('APPLES', 5) // 结果是APPLE

如果填充的字符串长度 > 待补长度,填充的字符串也会被截取后再进行填充,相反则会不断重复填充至待补长度为0。

RPAD('APPLES', 10, '') // 结果是APPLES1231

10.0 SUBSTR()

作用:截取指定长度的字符串

用法:SUBSTR(源字符串, 截取开始位置, 截取长度)

截取长度为可选参数。截取开始位置为正数时,不指定默认截取到末尾。

当截取开始位置是0或1的时候,都是从第一位开始截取(区别于下标,位置从1开始计算)。

当截取开始位置为负数时,反向截取。从最后一位开始截取相应的|截取开始位置|长度的字符串,当且仅当 |截取开始位置| > 截取长度 时截取长度才会生效。

SUBSTR('ABCDEFGH', -5, 6) // 结果是EFGHI,相当于SUBSTR('ABCDEFGH', -5, 5)
SUBSTR('ABCDEFGH', -5, 2) // 结果是GH

11.0 INSTR()

作用:在字符串中检索指定字符串,返回检索匹配起始位置

用法:INSTR(源字符串, 目标字符串, 检索起始位置, 匹配第几次出现)

检索起始位置和匹配第几次出现为可选参数。不指定默认都是1。

检索起始位置为负数时,反向检索,但是返回的匹配位置仍然是正向顺序。

INSTR('ABCDEFGH', 'EF', -2) // 结果是5

匹配第几次出现指目标字符串在字符串中第几次出现。

INSTR('ABEFCDEFGH', 'EF', 2, 2) // 结果是7,检索第二次出现的EF

检索不到,返回0,因此可以用 > 0 来表示匹配成功。作用和 LIKE '%字符串%' 相当。

"我本来是个很黯淡的人,是你给了我漫天星光。"

oracle一些单记录函数的更多相关文章

  1. Oracle SQL 内置函数大全

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ...

  2. Oracle SQL 内置函数大全(转)

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ...

  3. Oracle多行记录合并自定义函数

    在oracle数据库中,进行字段合并,可以使用wm_concat(column)函数,但是在这种方法不被Oracle所推荐,因为WMSYS用户用于Workspace Manager,其函数对象可能因版 ...

  4. Oracle 11g 单实例静默安装实战记录(linux)

    oracle 11g 单实例静默安装 AUTHOR:Oracle_Ran 环境规划: OS Version : Red Hat Enterprise Linux Server release 6.7 ...

  5. oracle 中的trunc()函数及加一个月,一天,一小时,一分钟,一秒钟方法

    返回处理后的数据,不同于round()(对数值进行四舍五入处理),该函数不对指定小数前或后的数值部分进行舍入处理. 语法:trunc(number[,decimals]) 其中,number为待做处理 ...

  6. Oracle 多行记录合并/连接/聚合字符串的几种方法

    怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结.-什么是合并多行字符串(连接字符串)呢,例如: SQL&g ...

  7. oracle获取字符串长度函数length()和hengthb()

    原文:oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算s ...

  8. Oracle的over子函数的妙用

    摘要 oracle的over 子函数可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段这对统计分析这类问题意想不到的 ...

  9. Oracle多行记录合并的几种方法

    今天正好遇到需要做这个功能,顺手搜了一下网络,把几种方法都列出来,方便以后参考. 1 什么是合并多行字符串(连接字符串)呢,例如: SQL> desc test; Name Type Nulla ...

随机推荐

  1. 利用nginx搭建小型的文件服务器

    PS内的文件如果需要共享给其他计算机下载,可以选择ftp的方式,优点是操作性很高,修改删除下载等等都可以,但是速度略慢. 如果仅仅是将VPS作为文件中转站,可以尝试用Nginx架设一个简单的文件服务器 ...

  2. RocketMQ实现事务消息

    在RocketMQ4.3.0版本后,开放了事务消息这一特性,对于分布式事务而言,最常说的还是二阶段提交协议,那么RocketMQ的事务消息又是怎么一回事呢,这里主要带着以下几个问题来探究一下Rocke ...

  3. P2089 烤鸡(搜索简单题)

    题意:就是x分别是1到3的未知数,求x1+x2+x3.....+x10=n的方案数和输出每种方案.每种方案还必须按字典序输出 思路:就是简单的构建搜索树+约束条件啊,其实数据范围一点都不大,所以,我第 ...

  4. 【转】MFC内嵌cef3浏览器内核

    一.cef3内核的下载 可以从http://opensource.spotify.com/cefbuilds/index.html下载,注意:很多版本编译都可以通过 但是运行的时候会崩溃,以cef_b ...

  5. docker 5 docker-阿里云加速配置

    阿里云加速配置 鉴于国内网络问题,后续拉取docker镜像十分缓慢,我们可以配置加速器来解决. 1.阿里云地址  https://dev.aliyun.com/ 如果你想注册,可以注册个账号. 不想注 ...

  6. nginx之七:nginx path(root)文件路径配置

    nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了如下,方便大家在应用过程中,快速响应.root和alias主要区别在于如何解释location后面的uri,这会使 ...

  7. Linux常用命令全称

    Linux常用命令全称 pwd:print work directory   打印当前目录 显示出当前工作目录的绝对路径 ps: process status(进程状态,任务管理器)    常用参数: ...

  8. Luogu P1967 货车运输

    qwq 这题是知道了正解做法才写的.. 求每两点间最小权值最大的路径,本来我以为要每个点都跑一遍dij(?),后来意识到生成树好像是用来找这个的( ´▽`) 然后我问dtxdalao对不对,他说“我记 ...

  9. 1、c++对c语言的扩展

    1.类型增强 检查更加严格 比如,把一个 const 类型的指针赋给非 const 类型的指针.c 语言中可以通的过,但是在 c++中则编不过去 ; int b = a; const int *pa ...

  10. Attribute "resultType" must be declared for element type "insert"或"update"

    Attribute "resultType" must be declared for element type "insert"或"update&q ...