当前位置: 首页 > news >正文

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匹配(如果存在)。

相关文章:

Oracle中常用内置函数

一、字符串函数 CONCAT(s1, s2):连接两个字符串s1和s2。 SELECT CONCAT(Hello, World) FROM DUAL-- 结果:Hello World --或者使用 || 操作符 SELECT Hello || World FROM DUAL -- 结果:Hello World INITCAP(s):将字符串s…...

餐饮冷库安全守护神:可燃气体报警器检定的科学性与有效性

随着餐饮业的快速发展,冷库成为储存食材、保证食品质量的重要场所。 然而,由于冷库环境的特殊性,如密封性强、温度低、湿度大等,一旦冷库内发生可燃气体泄露,后果将不堪设想。因此,在餐饮冷库中安装并合理…...

中国能源统计年鉴(1986-2023年)

数据年份:1986-2023年,无1987、1988、1990三年,1991-2023年齐 数据格式:pdf、excel 数据内容:《中国能源统计年鉴》是一部反映中国能源建设、生产、消费、供需平衡的权威性资料书。 共分为7个篇章:1.综合&a…...

摄像头画面显示于unity场景

🐾 个人主页 🐾 🪧阿松爱睡觉,横竖醒不来 🏅你可以不屠龙,但不能不磨剑🗡 目录 一、前言二、UI画面三、显示于场景四、结语 一、前言 由于标题限制,这篇文章主要是讲在unity中调用摄…...

Double 4 VR智能仿真教学系统在国际邮轮乘务管理专业课堂上的应用

随着科技的不断发展,虚拟现实技术(VR)在教育领域的应用越来越广泛。国际邮轮乘务管理专业作为一门实践性较强的专业,传统的课堂教学方法已经无法满足学生的需求。因此,将Double 4 VR智能仿真教学系统应用于国际邮轮乘务…...

QSPI四线SPI:D0、D1、D2、D3

在SPI(串行外设接口)通信中,D0、D1、D2、D3通常指的是数据线,也叫做数据引脚或通道。这些引脚的使用可能会根据具体设备或配置的不同而有所变化。 标准的SPI通信接口通常包含以下四个主要引脚: MOSI(Master…...

vue3通过vue-video-player实现视频倍速、默认全屏、拖拽进度条等功能

效果图: 1、场景: js原生的video标签在不同浏览器及不同型号手机上都展示的不一样,一部分没有倍速,一部分没有全屏等功能,为了统一视频播放的交互功能,使用vue-video-player插件来完成,vue-vid…...

微信小程序 点击左上角返回弹窗提示

业务需求:当页面表单没有提交直接返回时,要提示用户是否保存当前信息,如果已经提交就不提示了。 由于微信小程序是无法监听右上角按钮返回事件。 所以就换个思路 小程序提供了如下两个Api wx.enableAlertBeforeUnload(Object object)&…...

openEuler 22.03 (LTS-SP1)服务器用ntpd同步GPS时间服务器的案例

本文记录了openEuler 22.03 (LTS-SP1)的二级时间服务器用chronyd不能自动同步GPS时间服务器,改用ntpd同步GPS时间服务器成功的案例 一、环境简述 1、本环境中有两台GPS一级时间服务器,IP如下: 192.168.188.66 192.168.188.74 2、有一台o…...

Git的安装以及使用

一.简单介绍 1.1版本控制 版本控制是指对软件开发过程中各种程序代码,配置文件及说明文档等文件变更管理,是软件配置管理的核心思想之一。 版本控制最重要的内容是追踪文件的变更,它将什么时候,什么人更改了文件的什么内容等信息忠实的记录…...

双路视频同屏显示(拼接)-基于野火Zynq7020开发板

前情提要 米联客FDMA驱动OV5640摄像头—基于野火Zynq7020开发板 本文在此基础上,实现了双路视频拼接。将ov5640输出的1024600的图像数据缩放为512600,分两路写入ddr3,并且显示在1024*600的RGB屏幕中。 纯FPGA也可以按此方法实现。 总体BLOC…...

ForkJoinPool浅析

一,概述 相比传统的线程池ExecuteService,ForkJoinPool的优势在于能采用分治算法、工作窃取算法高效利用CPU资源,如下图 Fork即拆分,Join即合并, 通过将大任务拆分成多个小任务,在多个线程中执行后,合并结果即可得到大任务的结果,经典的例子有归并排序、超大数组求和…...

【AI-小米机器狗】Dockerfile包含SSH和SFTP

通过这些步骤,可以在docker容器中安装运行SSH和SFTP服务,设置ssh和sftp的密码,克隆指定的Git仓库到/home目录,并使用bash作为入口点, # 基于原始镜像 FROM cyberdog_sim:v1# 更新包列表并安装OpenSSH服务器和git RUN …...

仿真CAN报文发送的CRC校验算法(附CAPL代码)

文章目录 前言一、为什么CAN报文有CRC?二、怎么确定是否需要做CRC校验?三、CAPL代码实现CRC算法 前言 关于CRC校验的基本理论、算法实现网上已经有很多介绍文章,本文不再赘述。只是记录在项目测试中真正开发CRC算法并进行测试的一些体会。 …...

如何在Android应用中最佳实现“Edge to Edge“特性?

Edge to Edge"特性 要在Android应用中最佳实现"Edge to Edge"特性,可以按照以下步骤进行操作: 1. 设置目标版本:将应用的目标版本设置为Android Q或更高版本。在build.gradle文件中,将targetSdkVersion设置为Q。 2. 设置主题样式:在styles.xml文件中,创…...

多租户与低代码开发的应用:解锁企业数字化转型的无限可能

在数字化转型的浪潮中,多租户与低代码开发已经成为推动企业快速、灵活、安全地构建和部署应用的关键技术。本文将深入探讨这两种技术的结合如何为企业带来前所未有的变革和机遇。 多租户架构:资源共享与隔离的艺术 多租户架构,是一种高级的软…...

出现身份验证错误,无法连接到本地安全机构 顺利解决这个问题希望能帮助大家

出现身份验证错误,无法连接到本地安全机构,远程计算机:XX,这可能是由于密码过期,如果密码已过期请更新密码。 我们可以在系统属性中对远程进行设置,以解决远程桌面无法连接到本地安全机构这一问题。 步骤…...

老师把卷子拍成图片如何打印

如今,老师们经常会把试卷、习题拍成图片分享给学生(如通过微信群或钉钉群的形式)。但随之而来的问题是,这些图片如何方便地打印出来呢?尤其是当面对一张张精美的试卷图片时,许多学生和家长都感到头疼。 一…...

MySQL数据库(三):读取数据库数据

上一节,我们介绍了数据库的基本操作,以及最后演示了如何使用库来连接数据库,在实际应用中,我们通常需要按照指定的条件对数据库进行操作,即增删改查操作,这是非常重要的!这一节我们继续通过一个…...

分销裂变实战:PLG模式如何助力企业突破增长瓶颈

在竞争激烈的商业环境中,企业如何快速、有效地实现增长,一直是业界关注的焦点。近年来,分销裂变作为一种新兴的商业模式,凭借其独特的优势,逐渐受到企业的青睐。而产品驱动增长(PLG)模式更是为分…...

定积分定义求极限专题

文章目录 定积分定义求极限问题的描述解决方法真题实践(持续更新中,未完结) 定积分定义求极限问题的描述 在定积分定义求极限中,我们可能存在的问题 被积函数不会找积分区间不会定(只会[0,1]的)根本不知道“补系数”…...

LLaMA:挑战大模型Scaling Law的性能突破

实际问题 在大模型的研发中,通常会有下面一些需求: 计划训练一个10B的模型,想知道至少需要多大的数据?收集到了1T的数据,想知道能训练一个多大的模型?老板准备1个月后开发布会,给的资源是100张A100,应该用多少数据训多大的模型效果最好?老板对现在10B的模型不满意,想…...

vue3 +elementPlus上传照片墙

获取到照片字符串然后push到fileList对应的URL中 if (formData.value.pictures) {let zz formData.value.pictures.split(",")zz.forEach((item) > {fileList.value.push({ url: item })})}对应表单 <el-form-item label"内容详情图"><el-up…...

Charles网络抓包工具安装和web抓包(一)

目录 概述 抓包工具对比 安装 下载 web抓包配置 按键说明 前言-与正文无关 ​ 生活远不止眼前的苦劳与奔波&#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&#xff0c;我们往往容易陷入工作的漩涡&#xff0c;忘记了停下脚步&#…...

mysql workbench使用schema视图导出表和列结构到excel

目的&#xff1a;导出所有表和列的名字和注释 很多时候没有正规的数据库文档&#xff0c;为了快速交流啊&#xff0c;需要一个快捷的基础。数据库建表的时候可能有注释&#xff0c;也可能没有注释。有当然好&#xff0c;查看注释就能清楚很多&#xff0c;没有的话最好一个一个补…...

Linux操作系统--软件包管理(保姆级教程)

RPM软件包的管理 大多数linux的发行版本都是某种打包系统。软件包可以用来发布应用软件&#xff0c;有时还可以发布配置文件。他们比传统结构的.tar和.gz存档文件有几个优势。如它们能让安装过程尽可能成为不可分割的原子操作。 软件包的安装程序会备份它们改动过的文件。如果…...

【uniapp】HBuilderx中uniapp项目运行到微信小程序报错Error: Fail to open IDE

HBuilderx中uniapp项目运行到微信小程序报错Error: Fail to open IDE 问题描述 uniapp开发微信小程序&#xff0c;在HBuilderx中运行到微信开发者工具时报错Error: Fail to open IDE 解决方案 1. 查看微信开发者工具端服务端口是否开放 打开微信开发者工具选择&#xff1…...

Rust详解日志

详解日志 相比起监控&#xff0c;日志好理解的多&#xff1a;在某个时间点向指定的地方输出一条信息&#xff0c;里面记录着重要性、时间、地点和发生的事件&#xff0c;这就是日志。 注意&#xff0c;本文和 Rust 无关&#xff0c;我们争取从一个中立的角度去介绍何为日志 日…...

某麦网自动刷新抢票脚本——手机端(高级版)

某麦网自动刷新抢票脚本——电脑端 小白操作-抵制黄牛–需要更好用更高级关注获取 如何用Python自动抢大麦网演出票&#xff1f; 在数字化时代&#xff0c;购票已经成为我们生活的一部分&#xff0c;无论是音乐会、话剧、体育赛事还是各种展览&#xff0c;抢票几乎成了一项“…...

【MySQL】(基础篇十八) —— 触发器

触发器 本文学习什么是触发器&#xff0c;为什么要使用触发器以及如何使用触发器&#xff0c;还介绍创建和使用触发器的语法。 MySQL语句在需要时被执行&#xff0c;存储过程也是如此。但是&#xff0c;如果你想要某条语句&#xff08;或某些语句&#xff09;在事件发生自动执…...

群晖wordpress 证书/seo技术经理

问题描述&#xff1a;巨坑&#xff01;&#xff01;&#xff01;&#xff01; 正常新建完成一个项目demo2 代码和外部库都没有任何问题&#xff0c;跑起来测试的时候却失败了 原因分析&#xff1a; java.lang.NoClassDefFoundError: com/google/common/collect/Immutable…...

种植园网站模板/免费b2b网站推广有哪些

以下学习内容摘录自boost官网 例1. 最简单的HelloWorld例程 #include <boost/python.hpp> // 预备导出的函数 char const* greet() {return "hello, world"; } // 注册PYTHON模块hello_ext BOOST_PYTHON_MODULE(hello_ext) {using namespace boost::python;  …...

网站百科推广怎么做/关键词推广优化排名品牌

Java常见问题分析 一、JVM简介1.JVM内存模型 实际占用内存大小&#xff1a;-XX:MaxPermSize -Xmx -Xss -XX:MaxDirectMemorySize 如图一&#xff1a; 主要分为&#xff1a;非堆内存堆内存栈内存堆外内存 JVM主要管理两种类型的内存&#xff1a;堆和非堆。简单来说堆就是Ja…...

印度做网站需要备案吗/网站打开速度优化

引用官方的解释 PHP 在变量定义中不需要&#xff08;或不支持&#xff09;明确的类型定义&#xff1b;变量类型是根据使用该变量的上下文所决定的。也就是说&#xff0c;如果把一个 string 值赋给变量$var&#xff0c;$var 就成了一个 string。如果又把一个integer 赋给 $var&a…...

赣州房产网站建设/重大军事新闻最新消息

《计算机组成与系统结构实验报告1 (精选可编辑)》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《计算机组成与系统结构实验报告1 (精选可编辑)(14页珍藏版)》请在金锄头文库上搜索。1、 计算机组成原理实验报告评语:课中检查完成的题号及题数&#xff1a;课后完成的题…...

南京专业网站开发团队/长沙官网seo推广

从Active Directory获取大量对象时应特别注意&#xff0c;一不小心&#xff0c;就会掉入性能瓶颈甚至引起内存泄漏。本文提供了一个关于.NET访问Active Directory的优化例子。 1.获取对象的属性值 DirectoryEntry.Properties 获取一个DirectoryEntry对象后&#xff0c;我们就开…...