Oracle中常用内置函数

一、字符串函数

  • CONCAT(s1, s2):连接两个字符串s1和s2。
SELECT CONCAT('Hello', ' World') FROM DUAL-- 结果:'Hello World'  
--或者使用 || 操作符  
SELECT 'Hello' || ' World' FROM DUAL -- 结果:'Hello World'
  • INITCAP(s):将字符串s中每个单词的首字母变为大写,其余字母变为小写。
SELECT INITCAP('hello world') FROM DUAL; -- 结果:'Hello World'
SELECT INITCAP('helloworld') FROM DUAL -- 结果:'Helloworld'
  • INSTR(s1, s2, [start, [nth_appearance]]):在字符串s1中搜索s2,返回s2首次(或第n次)出现的位置。
SELECT INSTR('aaaaaa','a') FROM dual -- 结果: 1
SELECT INSTR('aaaaaa','a',1) FROM dual -- 结果: 1
SELECT INSTR('aaaaaa','a',2) FROM dual -- 结果: 2
SELECT INSTR('aaaaaa','a',3) FROM dual -- 结果: 3SELECT INSTR('abcabcabc','abc') FROM dual -- 结果: 1
SELECT INSTR('abcabcabc','abc',1) FROM dual-- 结果: 1
SELECT INSTR('abcabcabc','abc',2) FROM dual-- 结果: 4
SELECT INSTR('abcabcabc','abc',3) FROM dual-- 结果: 4
SELECT INSTR('abcabcabc','abc',4) FROM dual-- 结果: 4
SELECT INSTR('abcabcabc','abc',5) FROM dual-- 结果: 7SELECT INSTR('abcabcabc','abc',1,1) FROM dual-- 结果: 1
SELECT INSTR('abcabcabc','abc',1,2) FROM dual-- 结果: 4
SELECT INSTR('abcabcabc','abc',1,3) FROM dual-- 结果: 7
  • LENGTH(s):返回字符串s的长度。
SELECT LENGTH('Hello World') FROM DUAL -- 结果:11
SELECT LENGTH('HelloWorld') FROM DUAL -- 结果:10
  • LOWER(s):将字符串s中的所有字符转换为小写。
SELECT LOWER('HELLO WORLD') FROM DUAL; -- 结果:'hello world'
  • UPPER(s):将字符串s中的所有字符转换为小写。
  • LPAD(s, length, [pad_string]):在字符串s的左边填充字符,直到总长度为length。
SELECT LPAD('abc',10,'*')  FROM DUAL -- 结果:'*******abc'
SELECT LPAD('abc',10)  FROM DUAL -- 结果:'       abc'
SELECT LPAD('abc',10,' ')  FROM DUAL -- 结果:'       abc'
// 第二句和第三句sql执行结果相同

SELECT LPAD('abc',10,null)  FROM DUAL 
SELECT LPAD('abc',10,'')  FROM DUAL 

  • LTRIM(s, [trim_characters]):从字符串s的左边删除指定的字符(默认为空格)。
SELECT LTRIM('abcdefg','ab') FROM dual -- cdefg
SELECT LTRIM('abcdefg','abcdef') FROM dual -- g
SELECT LTRIM('abcdefg','efg') FROM dual -- cdefg
SELECT LTRIM('abcdefg') FROM dual -- abcdefg
SELECT LTRIM('    abcdefg') FROM dual -- abcdefg
  • RPAD(s, length, [pad_string]):在字符串s的右边填充字符,直到总长度为length。
  • RTRIM(s, [trim_characters]):从字符串s的右边删除指定的字符(默认为空格)。
  • SUBSTR(s, start, [length]):从字符串s的start位置开始截取length个字符。
SELECT SUBSTR('Hello World', 1, 5) FROM DUAL -- 结果:'Hello'
  • REPLACE(s, search_string, replace_string):在字符串s中替换所有的search_string为replace_string。
SELECT REPLACE('abcdefg','a','*') FROM dual -- *bcdefg
SELECT REPLACE('abcdefg','b','*') FROM dual -- a*cdefg
SELECT REPLACE('abcdefg','ab','*') FROM dual -- *cdefg
SELECT REPLACE('abcdefg','x','*') FROM dual -- abcdefg
SELECT REPLACE('aabb','a','*') FROM dual -- **bb
SELECT REPLACE('aabb','aa','*') FROM dual -- *bb

二、数值函数

  • ABS(n):返回n的绝对值。
SELECT ABS(-10) FROM DUAL; -- 结果:10
  • CEIL(n):返回大于或等于n的最小整数。
  • FLOOR(n):返回小于或等于n的最大整数。
  • MOD(m, n):返回m除以n的余数。
  • POWER(m, n):返回m的n次幂。
  • ROUND(n, m):将n四舍五入到小数点后m位。
  • SIGN(n):如果n是正数返回1,是负数返回-1,否则返回0。
  • SQRT(n):返回n的平方根。
  • TRUNC(n, m):根据m的值截取n。如果m为正,则截去小数点后的m位;如果m为负,则截去小数点前的m位。
SELECT TRUNC(123.456, 2) FROM DUAL -- 结果:123.45
SELECT TRUNC(123.456, 1) FROM DUAL -- 结果:123.4
SELECT TRUNC(123.456, 0) FROM DUAL -- 结果:123
SELECT TRUNC(123.456, -1) FROM DUAL -- 结果:120
SELECT TRUNC(123.456, -2) FROM DUAL -- 结果:100

三、日期函数

  • SYSDATE:返回当前系统日期和时间。
SELECT SYSDATE FROM DUAL -- 返回当前日期和时间  2024-06-28
  • ADD_MONTHS(date, number):返回date之后number个月的日期。
SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL -- 返回当前日期后一个月的日期  2024-07-28
SELECT ADD_MONTHS(SYSDATE, 2) FROM DUAL -- 返回当前日期后一个月的日期  2024-08-28
SELECT ADD_MONTHS(SYSDATE, 12) FROM DUAL -- 返回当前日期后一个月的日期  2025-06-28
  • LAST_DAY(date):返回date所在月份的最后一天的日期。
SELECT LAST_DAY(SYSDATE) FROM DUAL -- 返回当前月份的最后一天  2024-06-30
SELECT LAST_DAY(ADD_MONTHS(SYSDATE,1)) FROM DUAL --   2024-07-31
  • MONTHS_BETWEEN(date1, date2):返回date1和date2之间相差的月数。
SELECT MONTHS_BETWEEN(SYSDATE, ADD_MONTHS(SYSDATE, -1)) FROM DUAL -- 结果:1
  • NEXT_DAY(date, day_of_week):返回date之后的第一个day_of_week的日期。
SELECT SYSDATE  FROM DUAL -- 结果:2024-06-28
SELECT NEXT_DAY(SYSDATE,1)  FROM DUAL -- 查找2024-6-28之后的下一个星期日的日期 结果:2024-06-30
SELECT NEXT_DAY(SYSDATE,2)  FROM DUAL -- 查找2024-6-28之后的下一个星期三的日期 结果:2024-07-01
SELECT NEXT_DAY(SYSDATE,5)  FROM DUAL -- 结果:查找2024-6-28之后的下一个星期四的日期 2024-07-04
SELECT NEXT_DAY(SYSDATE,7)  FROM DUAL -- 结果:查找2024-6-28之后的下一个星期六的日期 2024-06-29
// 1,2,3,4,5,6,7分别代表周日,周一,周二,周三,周四,周五,周六

 

  • TO_CHAR(date, 'format'):将日期date转换为指定'format'格式的字符串。
SELECT TO_CHAR(SYSDATE,'yyyy-MM-dd')  FROM DUAL -- 结果:2024-06-28
SELECT TO_CHAR(SYSDATE,'yyyy-MM')  FROM DUAL -- 结果:2024-06
SELECT TO_CHAR(SYSDATE,'yyyy-MM-dd')  FROM DUAL -- 结果:2024-06-28
SELECT TO_CHAR(SYSDATE,'yyyy-MM-dd hh:mm:ss')  FROM DUAL -- 结果:2024-06-28 07:06:29
  • TO_DATE(string, 'format'):将字符串string按照指定'format'格式转换为日期。
SELECT TO_DATE('2023-10-23', 'YYYY-MM-DD') AS converted_date FROM DUAL;--2023-10-23
SELECT TO_DATE('2024-5-20 23:59:59', 'yyyy-MM-dd HH24:mi:ss') FROM dual-- 结果:2024-05-20

 需要注意format格式:

正确格式:yyyy-MM-dd HH24:mi:ss或yyyy-MM-dd HH:mi:ss

 四、转换函数

  • TO_CHAR(x, 'format'):将数字x或日期转换为指定'format'格式的字符串。
  • TO_DATE(s, 'format'):将字符串s按照指定'format'格式转换为日期。
  • TO_NUMBER(s, 'format'):将字符串s按照指定'format'格式转换为数字。
SELECT TO_NUMBER('123') FROM DUAL; -- 结果:123

 五、统计函数(聚合函数)

  • AVG(columnName):返回columnName的平均值。
SELECT AVG(salary) FROM employees; -- 返回员工的平均工资
  • COUNT(columnName):返回columnName的记录数。
  • MAX(columnName):返回columnName的最大值。
  • MIN(columnName):返回columnName的最小值。
  • SUM(columnName):返回columnName的总和。

六、其他函数

  • NVL(expression1, expression2):如果expression1为NULL,则返回expression2的值;否则返回expression1的值。
SELECT NVL('abc', 'No Value') FROM DUAL -- 结果:abc
SELECT NVL(NULL, 'No Value') FROM DUAL -- 结果:'No Value'
SELECT NVL(NULL, '没有值') FROM DUAL -- 结果:没有值
SELECT NVL('', '没有值') FROM DUAL -- 结果:没有值
  • DECODE(expression, search1, result1, [search2, result2, ...], default):类似于其他编程语言中的switch-case语句,根据expression的值返回对应的结果。

SELECT DECODE(5000, 5000, 'Low', 10000, 'High', 'Medium') AS salary_range  FROM dual -- 结果: Low
SELECT DECODE(10000, 5000, 'Low', 10000, 'High', 'Medium') AS salary_range  FROM dual -- 结果: High
SELECT DECODE(123, 5000, 'Low', 10000, 'High', 'Medium') AS salary_range  FROM dual -- 结果: Medium
// 将传入的第一个值与5000,10000相比较,第一个参数的值等于5000,输出low,第一个参数的值等于10000输出high,第一个参数的值既不等于5000也不等于10000则输出medium

注意事项:

  • 从Oracle 11g开始,虽然DECODE函数仍然可用,但Oracle官方推荐使用CASE语句代替DECODE函数,因为CASE语句在某些情况下可能具有更好的可读性和灵活性。
  • 每个search_valueN只能出现一次,但可以有多个连续的result_valueN作为条件判断的结果。
  • 如果expression的值为NULL,它将与NULL search_valueN匹配(如果存在)。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony 5.0 纯血鸿蒙系统

OpenHarmony-v5.0-Beta1 版本已于 2024-06-20 发布。 OpenHarmony 5.0 Beta1 版本标准系统能力持续完善,ArkUI 完善了组件通过 C API 调用的能力;应用框架细化了生命周期管理能力,完善了应用拉起、跳转的能力;分布式软总线连接能力…

如何找合适的C++项目给自己的简历加分?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! C的工作多种多样&#x…

Str.format()方法

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 在Python2.6之后,提供了字符串的format()方法对字符串进行格式化操作。format()功能非常强大,格式也比较复杂&…

MobPush iOS端海外推送最佳实现

推送注册 在AppDelegate里进行SDK初始化&#xff08;也可以在Info.plist文件中进行AppKey&#xff0c;AppSecret的配置&#xff09;并对通知功能进行注册以及设置推送的环境和切换海外服务器等&#xff0c;参考如下步骤代码&#xff1a; <span style"background-colo…

文心一言 VS 讯飞星火 VS chatgpt (291)-- 算法导论21.3 4题

四、假设想要增加一个 PRINT-SET(x) 操作&#xff0c;它是对于给定的结点 x 打印出 x 所在集合的所有成员&#xff0c;顺序可以任意。如何对一棵不相交集合森林的每个结点仅增加一个属性&#xff0c;使得 PRINT-SET(x) 所花费的时间同 x 所在集合元素的个数呈线性关系&#xff…

C++ | Leetcode C++题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; class Solution {const int L 10;unordered_map<char, int> bin {{A, 0}, {C, 1}, {G, 2}, {T, 3}}; public:vector<string> findRepeatedDnaSequences(string s) {vector<string> ans;int n s.length();if (n < L…

内网穿透实现方案(免费版)_免费内网穿透

#巴比达内网穿透——我的网络救星# 作为一个常常在网络世界里摸索的人&#xff0c;我一直在寻找一款真正好用的内网穿透工具。相信很多朋友都和我有过一样的经历&#xff0c;为了找到合适的工具&#xff0c;试了一个又一个&#xff0c;却总是失望而归。但这次&#xff0c;我真…

2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试…

大厂程序员上班猝死成常态?

大家好&#xff0c;我是瑶琴呀&#xff0c;拥有一头黑长直秀发的女程序员。 近日&#xff0c;连续看到大厂程序员猝死、低血糖晕倒的新闻&#xff0c;同为程序员感到很难受。互联网加班成常态这是既定事实&#xff0c;尤其在这个内卷严重、经济不景气的环境中&#xff0c;加班…

C++编程(一)C++与C语言的一些区别

文章目录 一、QtCreator基本使用&#xff08;一&#xff09;编码格式&#xff1a;&#xff08;二&#xff09;C编程1. 文件后缀2. 编译3. 头文件 二、名字空间&#xff08;一&#xff09;概念以及访问方式1. 概念2. 访问方式&#xff08;1&#xff09;通过作用域限定符进行访问…

数据挖掘常见算法(聚类)

划分方法 K-均值算法(K-means算法) 方法: 首先选择K个随机的点,称为聚类中心.对于数据集中的,每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一类.计算每一个组的平均值,将改组所关联的中心点移动到平均值的位置重复2~…

波士顿大学开发通过患者的声音检测早期阿尔茨海默氏症迹象的AI系统

波士顿大学的研究人员开发了一种人工智能系统&#xff0c;能够通过患者的声音检测阿尔茨海默病的早期迹象。目前尚无治愈这种疾病的方法&#xff0c;但及早发现可以改善患者的治疗选择。研究人员结合自然语言处理和机器学习&#xff0c;开发了一种可以自动预测患者阿尔茨海默病…

RocketMq源码解析九:刷盘机制及过期文件删除

一、刷盘机制 刷盘策略在不同时间进行刷写磁盘。RocketMQ的存储是基于JDK NIO的内存映射机制(MappedByteBuffer)的,消息存储首先将消息追加到内存,再根据配置的刷写磁盘 同步刷盘表示消息追加到内存后,立即将数据刷写到文件系统中。代码的调用链如下: submi…

新手必备!短视频剪辑常用的18个技巧——剪映篇

导入素材&#xff1a;这里我们可以选择自己拍摄好的素材&#xff08;图片、视频或录制好的音频&#xff09;&#xff0c;按照顺序导入剪辑区剪辑。这一步是剪辑的基础&#xff0c;确定剪辑的大体思路与成片框架&#xff01;别忽略了&#xff0c;剪映官方素材库提供的素材&#…

【数学建模】—【Python库】—【Numpy】—【学习】

目录 ​编辑 1. NumPy安装 2. ndarray对象 1. 创建ndarray 1.从列表或元组创建&#xff1a; 2.使用内置函数创建&#xff1a; 2. ndarray属性 3. 数组运算 1. 基本运算 2. 数学函数 3.统计函数 4. 数组索引与切片 1. 一维数组索引与切片 2.多维数组索引与切片 5.…

免费直播课程!6月30日

<面向人工智能领域的开发工程师&#xff0c;特别是机器学习/深度学习方向> 在这里报名听课&#xff1a; F学社-全球FPGA技术提升平台 (zzfpga.com) TIPS&#xff1a; 报名后将在页面内弹出「腾讯会议号和会议密码」&#xff0c;注意复制保存哦~

python笔记----少儿编程课程

第1课&#xff1a; 认识新朋友-python 知识点&#xff1a; 1、在英文状态下编写Python语句。 2、内置函数print()将结果输出到标准的控制台上&#xff0c;它的基本语法格式如下&#xff1a; print("即将输出的内容") #输出的内容要用引号引起来&#xff0c;可…

Jmeter插件管理器,websocket协议,Jmeter连接数据库,测试报告的查看

目录 1、Jmeter插件管理器 1、Jmeter插件管理器用处&#xff1a;Jmeter发展并产生大量优秀的插件&#xff0c;比如取样器、性能监控的插件工具等。但要安装这些优秀的插件&#xff0c;需要先安装插件管理器。 2、插件的下载&#xff0c;从Availabale Plugins中选择&#xff…

android Studio 无线开发调试: PC机远程安卓电脑 免费

背景 公司的安卓机比较大&#xff0c;还有连接着串口设备不好挪动。 但是遇到问题调试很麻烦。想找到一套远程调试方法。 实现 要求&#xff1a; adb android Studio 2023.3.1 安卓机IP:1928.168.1.228 直接用adb远程连接&#xff1a;adb connect 1928.168.1.228 默认端口…

Kotlin 中的数据类型有隐式转换吗?

在 Kotlin 中&#xff0c;数据类型不可隐式转换。在 Java 中&#xff0c;如果数据是从小到大&#xff0c;是可以隐式转换的&#xff0c;数据类型将自动提升。 下面以 int 类型的数据为例&#xff0c;在 Java 中这样写是可以的&#xff1a; int a 2312; long b a;但是在 Kot…