Oracle函数

文章目录

  • 一、数据类型函数
    • 1、数学函数
      • 1)绝对值
      • 2)向上取整
      • 3)向下取整
      • 4)四舍五入
      • 5)截取
      • 6)幂运算
      • 7)平方根
      • 8)取余
      • 9)判断正负数
    • 2、字符串函数
      • 1)字符串长度
      • 2)字符串拼接
      • 3)指定字符在字符串左边填充
      • 4)指定字符在字符串右边填充
      • 5)转大小写
      • 6)字符串第1位变大写,其它变小写
      • 7)去除字符串两端内容
      • 8)去除字符串左侧内容
      • 9)去除字符串右侧内容
      • 10)截取字符串
      • 11)获取字串在字符串的位置
      • 12)字符串反转
      • 13)替换
    • 3、日期时间函数
      • 1)当前日期时间
      • 2)提取
      • 3)运算
      • 4)格式化
      • 5)最早/最晚的日期
      • 6)本月最后一天的此刻
      • 7)两个日期相差的月数
      • 8)下一个周几的日期
      • 9)四舍五入
      • 10)TRUNC
    • 4、其它
      • 1)转换
  • 二、聚合函数
    • 1、平均值
    • 2、最大值
    • 3、最小值
    • 4、求和
    • 5、统计数量
  • 三、其它
    • 1、NVL
    • 2、NVL2
    • 3、NULLIF
    • 4、DECODE


一、数据类型函数

1、数学函数

1)绝对值

ABS(num)

2)向上取整

CEIL(2.1)	-- 3

3)向下取整

FLOOR(2.6)	-- 2

4)四舍五入

-- precision:保留几位小数
ROUND(value, precision)

ROUND(2.66, 1)	-- 2.7
ROUND(2.66, 0)	-- 3

5)截取

  • 处理数值,不会四舍五入
-- decimals:截取的位数
TRUNC(value, decimals)

TRUNC(123.5678, 1)	-- 123.5
TRUNC(123.5678, 0)	-- 123

-- 截取的位数为负数时,从整数位开始,把数值直接变为0
TRUNC(123.5678, -1)	-- 120
TRUNC(123.5678, -2)	-- 100

6)幂运算

-- exponent:几次方
POWER(value, exponent)

POWER(3, 2)	-- 9

7)平方根

SQRT(9)	-- 3

8)取余

MOD(10, 3)	-- 1

9)判断正负数

-- 正数返回1;负数返回-1;0返回0
SIGN(NUM)

2、字符串函数

1)字符串长度

-- 字符长度
LENGTH('abc')	-- 3

-- 字节长度
LENGTHB('中国')	-- 4

2)字符串拼接

CONCAT('ab', 'cd')	-- abcd
'ab' || 'cd'	-- abcd

3)指定字符在字符串左边填充

LPAD('abc', 5, '+')	-- ++abc

4)指定字符在字符串右边填充

RPAD('abc', 5, '+')	-- abc++

5)转大小写

UPPER('abc')	-- ABC
LOWER('ABc')	-- abc

6)字符串第1位变大写,其它变小写

INITCAP('aBc')	-- Abc

7)去除字符串两端内容

-- 去除两端空白字符
TRIM(' abc ')	-- abc

-- 去除两端a
TRIM('a' from 'abc')	-- bc

8)去除字符串左侧内容

-- 去除左侧空白字符
LTRIM(' abc')	-- abc

-- 去除左侧a
LTRIM('aba', 'a')	-- ba
LTRIM('ba', 'a')	-- ba

9)去除字符串右侧内容

-- 去除右侧空白字符
RTRIM('abc ')	-- abc

-- 去除右侧a
RTRIM('aba', 'a')	-- ab
RTRIM('bc', 'a')	-- bc

10)截取字符串

-- start:从第几位开始,负数表示从尾部开始
-- length:截取几位,不写截取到末尾
SUBSTR(value, start, length)

SUBSTR('abcd', 1, 2)	-- ab
SUBSTR('abcd', 2, 2)	-- bc

SUBSTR('abcd', 2)	-- bcd

SUBSTR('abcd', -2, 2)	-- cd

11)获取字串在字符串的位置

  • 不包含返回0
-- 开始位置:不写从1开始
-- 第几次出现:不写=1
INSTR(value, 子串, 开始位置, 第几次出现)	-- 等效于INSTR2

INSTR('abcdab', 'a')	-- 1
INSTR('abcd', 'e')		-- 0
INSTR('abcab','a', 1, 2)	-- 4

12)字符串反转

REVERSE('abc')	-- cba

13)替换

REPLACE(value, 需要替换的字符串, 替换成的字符串)

REPLACE('abbab', 'a', 'b')	-- bbbbb
REPLACE('abab', 'ab', 'b')	-- bb

REGEXP_REPLACE(value, 正则表达式, 替换成的字符串)

REGEXP_REPLACE('12b', '[0-9]+', 'b')	-- bb

3、日期时间函数

1)当前日期时间

-- 系统时间(服务器时间)
SYSDATE	-- 2024-06-02 15:51:04
SYSTIMESTAMP --	2024-06-02 15:51:04.320000 +08:00

-- 当前会话时间
CURRENT_DATE -- 2024-06-02 15:51:04

2)提取

EXTRACT(YEAR FROM 日期)
EXTRACT(MONTH FROM 日期)
EXTRACT(DAY FROM 日期)
EXTRACT(HOUR FROM 日期)
EXTRACT(MINUTE FROM 日期)
EXTRACT(SECOND FROM 日期)


3)运算

-- 增加/减少几个月
-- count:正数-加;负数-减
ADD_MONTHS(日期时间, count)

-- 两个日期直接相减,返回相差的天数
date1 - date2

4)格式化

format说明
YYYY4位年
MM2位月
MONTH英文月:JUNE
MON月的3字母缩写:JUN
DD月中天
DAY星期几:Sunday
DY星期几英文3字母缩写:SUN
HH1212小时制
HH2424小时制
MI分钟
SS
AM或PM该日期是上午则会显示AM,下午则显示PM
-- 日期时间 -> 字符串
TO_CHAR(日期, format)

TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')
TO_CHAR(SYSDATE, 'AM-YYYY-MM-DD HH24:MI:SS')	-- PM-2024-06-02 16:24:07

-- 字符串 -> 日期时间
TO_DATE(字符串, format)

TO_DATE('2019-12-05 17:26:02', 'YYYY-MM-DD HH24:MI:SS')

5)最早/最晚的日期

LEAST(date1, date2, ......)
GREATEST(date1, date2, ......)

6)本月最后一天的此刻

LAST_DAY(SYSDATE)	-- 2024-06-30 16:28:28

7)两个日期相差的月数

MONTHS_BETWEEN(date1, date2)

8)下一个周几的日期

-- 1-7:星期日 - 星期六
NEXT_DAY(日期, 星期几)

-- 下一个星期一的日期
NEXT_DAY(SYSDATE, 2)	-- 2024-06-03 16:33:57

9)四舍五入

ROUND(SYSDATE, 'MONTH')

10)TRUNC

-- 本周第一天
TRUNC(SYSDATE, 'IW')
-- 本周最后一天
TRUNC(SYSDATE, 'IW') + 6

-- 本月第一天
TRUNC(SYSDATE, 'MONTH')
-- 本月最后一天
TRUNC(LAST_DAY(SYSDATE))

-- 本季度第一天
TRUNC(SYSDATE, 'Q')

-- 本年第一天
TRUNC(SYSDATE, 'YEAR')

4、其它

1)转换

-- 1、数值转字符串
TO_CHAR(123.12, '000.00')

-- 长度不够的用0补齐
TO_CHAR(123.12, '0000.000')	-- 0123.120
-- 千分位、小数位
TO_CHAR(100100.12, '$000,000.00')	-- $100,100.12

-- 2、字符串转数值
/*
format:
	9:代表一个数字
	0:强迫0显示
	$:美元符号
	L:当地货币符号
	.:小数点
	,:千位分隔符号
*/
TO_NUMBER(value, format)

TO_NUMBER('12345')
TO_NUMBER('$123,456.12', '$999,999.99')	-- 123456.12

CAST(value AS 数据类型)

CAST('123' AS NUMBER)
CAST('123.56' AS NUMBER)	-- 123.56
CAST('123.56' AS NUMBER(4, 1))	-- 123.6
CAST('123.56' AS INTEGER)	-- 124

二、聚合函数

1、平均值

-- 会忽略NULL值

AVG(column)

SELECT AVG(AGE) FROM T_USER

2、最大值

MAX(column)

3、最小值

MIN(column)

4、求和

-- 会忽略NULL值

-- 1、单字段
SUM(colnum)

-- 2、多字段的值全部相加
SUM(colnum+column+...)

5、统计数量

-- 该字段不为null的数量
COUNT(column)

-- 统计表中所有字段的数据的最大个数
COUNT(*)
-- 统计表中数量时,统计id最合适,因为主键不会为null
COUNT(id)

三、其它

1、NVL

-- 如果expression的值为NULL则返回value,不为NULL则返回expression
NVL(expression, value)

SELECT NVL(NAME, '未知') FROM T_USER;

2、NVL2

-- 如果expression的值为NULL则返回y,不为NULL则返回X
NVL2(expression, x, y)

SELECT NVL2(NAME, NAME, '未知') FROM T_USER;

3、NULLIF

-- 如果x=y则返回NULL,否则返回x
NULLIF(x, y)

SELECT NULLIF(1, 0) FROM DUAL;

4、DECODE

-- 如果a=b则返回c,否则返回d
DECODE(a, b, c, d)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900696.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7、哈希表

7、哈希表 哈希表最主要的作用就是把一个比较庞大的空间或者值域 映射到比较小的值域 (0-n) 就是将-10^9 ~10^9 映射到 0 ~10^5 一、存储结构 映射的方法可以是 h(x) x mod 10^5 但是这样映射会出现一个问题 可能会有重复的数字出现 所以就引出了两个方法 开放寻址法 和…

【Javaee】网络原理—TCP协议的核心机制

前言 TCP/IP五层协议是互联网中的主流模型,为网络通信提供了一个稳固的框架。 主要包含了应用层,传输层,网络层,数据链路层,物理层。 本篇主要介绍传输层的TCP协议的核心机制 一. 确认应答(ack&#xf…

SQL 干货 | SQL 半连接

大多数数据库开发人员和管理员都熟悉标准的内、外、左和右连接类型。虽然可以使用 ANSI SQL 编写这些连接类型,但还有一些连接类型是基于关系代数运算符的,在 SQL 中没有语法表示。今天我们将学习一种这样的连接类型:半连接(Semi …

内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)

内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)-含详细原理配置说明介绍 前言 远程桌面协议(RDP, Remote Desktop Protocol)可用于远程桌面连接,Windows系统(家庭版除外)也是支持这种协议的,无需安装…

[RK3566-Android11] 使用SPI方式点LED灯带-JE2815/WS2812,实现呼吸/渐变/随音量变化等效果

问题描述 之前写了一篇使用GPIO方式点亮LED灯带的文章 https://blog.csdn.net/jay547063443/article/details/134688745?fromshareblogdetail&sharetypeblogdetail&sharerId134688745&sharereferPC&sharesourcejay547063443&sharefromfrom_link 使用GPIO…

C++20中头文件ranges的使用

<ranges>是C20中新增加的头文件&#xff0c;提供了一组与范围(ranges)相关的功能&#xff0c;此头文件是ranges库的一部分。包括&#xff1a; 1.concepts: (1).std::ranges::range:指定类型为range&#xff0c;即它提供开始迭代器和结束标记(it provides a begin iterato…

博弈论 C++

前置知识 若一个游戏满足&#xff1a; 由两名玩家交替行动在游戏进行的任意时刻&#xff0c;可以执行的合法行动与轮到哪位玩家无关不能行动的玩家判负 则称该游戏为一个公平组合游戏。 尼姆游戏&#xff08;NIM&#xff09;属于公平组合游戏&#xff0c;但常见的棋类游戏&…

idea(2017版)创建项目的搭建方式

目录 一、普通Java项目 二、普通JavaWeb项目 三、maven的Java项目 四、maven的JavaWeb项目 一、普通Java项目 1.创建新项目 2.因为是普通的java项目&#xff0c;所以先点最上面的Java&#xff0c;然后确定jdk&#xff0c;然后next 3.这里直接点next 4.写好项目名称和路径…

互联网系统的微观与宏观架构

互联网系统的架构设计&#xff0c;通常会根据项目的体量、业务场景以及技术需求被划分为微观架构&#xff08;Micro-Architecture&#xff09;和宏观架构&#xff08;Macro-Architecture&#xff09;。这两者的概念与职责既独立又相互关联。本文将通过一些系统案例&#xff0c;…

Vue3 学习笔记(五)Vue3 模板语法详解

在 Vue3 的世界里&#xff0c;模板语法是我们构建用户界面的基石。今天&#xff0c;让我们一起深入了解 Vue3 的模板语法&#xff0c;我将用通俗易懂的语言和实用的例子&#xff0c;带你掌握这项必备技能。 1、文本插值&#xff1a;最基础的开始 想在页面上显示数据&#xff1f…

《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 模块化基础篇》

从无到有&#xff0c;打造模块化项目。构建一个开箱即用的项目&#xff0c;从 Git 上拉取下来即可直接进行开发&#xff0c;其中涵盖路由通信、上下拉刷新、网络请求、事件通知、顶部tab封装等功能&#xff0c;项目里调用API为鸿洋大佬的wanAndroidAPI。后期将持续完善&#xf…

【C】数组(array)

数组(array) 数组的概念 数组是一组相同类型元素的集合 数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0数组中存放的多个数据&#xff0c;类型是相同的 数组分为一维数组和多维数组&#xff0c;多维数组一般比较多见的是二维数组 一维数组的创建和初始…

JAVA面试八股文(五)

#1024程序员节&#xff5c;征文# 在1024程序员节这个特别的日子里&#xff0c;首先&#xff0c;我想对每一位程序员表示最诚挚的祝贺&#xff01;祝愿大家在未来的日子里&#xff0c;能够继续热爱编程、追求卓越&#xff0c;携手共创更美好的科技未来&#xff01;让我们共同庆祝…

Redis Search系列 - 第六讲 基准测试 - Redis Search VS. MongoDB VS. ElasticSearch

目录 一、引言二、Redis Search 2.x版本的性能提升三、Redis Search VS. MongoDB VS. ElasticSearch3.1 测试环境3.2 100%写 - 基准测试3.3 100%读 - 基准测试3.4 混合读/写/搜索 - 基准测试2.5 搜索延迟分析3.6 读延迟分析3.7 写延迟分析3.8 Redis Search VS. ElasticSearch3.…

混个1024勋章

一眨眼毕业工作已经一年了&#xff0c;偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候&#xff0c;本来以为自己这一年没学到多少东西&#xff0c;但是看看自己的博客其实也有在进步&#xff0c;虽然比不上博客里的众多大佬&#xff0c;但是回头看也算是自己的…

micro-app【微前端实战】主应用 vue3 + vite 子应用 vue3+vite

micro-app 官方文档为 https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/framework/vite 子应用 无需任何修改&#xff0c;直接启动子应用即可。 主应用 1. 安装微前端框架 microApp npm i micro-zoe/micro-app --save2. 导入并启用微前端框架 microApp src/main.ts …

手机摄影入门

感觉会摄影的人是能够从生活中发现美的人。 我不太会拍照&#xff0c;觉得拍好的照片比较浪费时间&#xff0c;而且缺乏审美也缺乏技巧&#xff0c;所以拍照的时候总是拍不好。但有时候还是需要拍一些好看的照片的。 心态和审美可能需要比较长时间提升&#xff0c;但一些基础…

Apple Vision Pro市场表现分析:IDC最新数据揭示的真相

随着AR/VR技术逐渐成熟并被更多消费者接受,2024年第二季度(Q2)成为这一领域的一个重要转折点。根据国际数据公司(IDC)发布的最新报告,整个AR/VR市场在本季度经历了显著的增长。接下来,我们将深入探讨Apple Vision Pro在这股增长浪潮中的具体表现。 市场背景 2024年Q2,…

中航资本:股票支撑位和压力位什么意思?股票如何找支撑与压力?

股票支撑位和压力位什么意思&#xff1f; 支撑位是指股票价格在下跌过程中遇到的一个或多个价格方位&#xff0c;这些价位上存在着较强的买盘力气&#xff0c;可以提供满足的支撑&#xff0c;阻止股价继续下跌。 而股票压力位是指股票价格在上涨过程中遇到的一个或多个价格方…

docker部署rustdesk

文章目录 一.ubuntu修改ssh端口二.开放端口三.安装rustDesk四.连接验证 一.ubuntu修改ssh端口 借鉴乌班图Ubuntu 24.04 SSH Server 修改默认端口重启无效 https://bugs.launchpad.net/ubuntu/source/openssh/bug/2069041 sudo vim /etc/ssh/sshd_config sudo systemctl daem…