Oracle 单行函数

学习Oracle 单行函数:

包括字符函数,数值函数,日期函数,转换函数,通用函数。
dual是一个”伪表”,可以用来测试函数和表达式。
1, 字符函数
包括大小写控制函数,字符控制函数。
大小写控制函数:lower,upper,initcap。
字符控制函数:concat,substr,length,instr,lpad | rpad,trim,replace。
select lower( last_name || first_name) from employees;
select upper( last_name || first_name) from employees;
select initcap(job_id),job_id from employees;

select concat('Hello','World') from dual;
select substr('HelloWorld',1,5) from dual;
select length('HelloWorld') from dual;
select instr('HelloWorld','W') from dual;
select lpad('salary',10,'*') from dual;

select rpad('salary',10,'*') from dual;
select trim('H' from 'HelloWorld') from dual;
select replace('Hello','e','o') from dual;

2, 数字函数
分别有:round — 四舍五入,trunc — 截断,mod — 求余
select round(85.969,2),round(85.969,0),round(85.969,-1) from dual;
select trunc(85.969,2),trunc(85.969,0),trunc(85.969,-2) from dual;
select last_name,salary,mod(salary,5000) from employees;

3, 日期函数
函数sysdate 返回:日期,时间
日期的数学运算:

(1)在日期上加上或减去一个数字结果仍为日期
(2)两个日期相减返回日期之间相差的天数(日期不允许做加法运算,无意义)
(3)可以用数字除24来向日期中加上或减去天数。

计算员工入职日期距离系统当前时间相差多少个星期:
select last_name,(sysdate-hire_date)/7 as "周末" from employees;

日期函数:
months_between:两个日期相差的月数。
add_months:向指定日期中价上若干月数。
next_day:指定日期的下个星期*对应的日期。
last_day: 本月的最后一天。
round: 日期四舍五入。
trunc:日期截断。

select round( months_between(sysdate,'1-1月-19')) from dual;
select add_months(sysdate,3) from dual;
select next_day(sysdate,'星期五') from dual;
select last_day(sysdate) from dual;

4,转换函数
数据类型转换:隐性/显性
隐性数据类型转换:
Oracle 自动完成转换:
Varchar2 or char --> number
Varchar2 or char–> date
Number --> Varchar2
Date --> Varchar2

To_char 函数对日期的转换

(1)必须包含在单引号中而且大小写敏感。
(2)可以包含任意的有效的日期格式。
(3)日期之间用逗号隔开。

select last_name,to_char(hire_date,'dd month yyyy') from employees;

To_char 函数对字符的转换
select to_date('2019年1月29日 10:10:20','yyyy"年"mm"月"dd"日"hh:mi:ss') From dual

to_char函数对数字的转换
下面是在to_char 函数中经常使用的几种格式:

9  数字
0	零
$  美元符
L  本地货币符号
.  小数点
, 千位符

To_char函数对数字的转换

select last_name, to_char(salary,'$999,999,99') "工资" from employees;

5,通用函数
下面这些函数适用于任何数据类型,同时也适用于空值:
nvl(n1,n2)
nvl2(n1,n2,n3)
nullif(n1,n2)
coalesce(n1,n2……,nn)

nvl 函数:
将空值转换成一个已知的值:

    (1)可以使用的数据类型有日期、字符、数字。(2)函数的一般形式:–	nvl (commission_pct,0)–	nvl (hire_date,'01-7月-97')–	nvl (job_id,'No Job Yet')(3)nvl2 (n1, n2,n3) :n1不为NULL,返回n2;为NULL,返回n3。

select last_name,salary,nvl(commission_pct,0),(salary*12)+ (salary*12*nvl(commission_pct,0)) "工资" from employees;
select last_name, salary, commission_pct, nvl2(commission_pct, 'AA', 'YY') from employees where department_id in (50, 80);

nullif (n1,n2) : 相等返回null,不等返回n1。

select first_name, length(first_name) "n1", last_name, length(last_name) "n2", nullif(length(first_name), length(last_name)) "结果" from employees;

coalesce函数
(1)coalesce与nvl相比的优点在于 coalesce可以同时处理交替的多个值。
(2)如果第一个表达式为空,则返回下一个表达式,对其他的参数进行coalesce。
select last_name, coalesce(commission_pct, salary, 10) YY from employees order by commission_pct;

条件表达式
(1)在 SQL 语句中使用if-then-else 逻辑
(2)使用两种方法:
– case表达式
– decode 函数

select last_name, job_id, salary, case job_id when 'IT_PROG' then 1.10*salary when 'AD_VP' then 1.15*salary when 'AD_PRES' then 1.20*salary else salary end "综合" from employees;

嵌套函数
(1)单行函数可以嵌套。
(2)嵌套函数的执行顺序是由内到外。
F3(F2(F1(col,arg1),arg2),arg3)

select last_name, nvl(to_char(manager_id), 'No') from employees;

本篇的单行函数到这里结束。通过这篇我们应该对单行函数有初始的了解,深入了解还需要勤加练习。

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

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

相关文章

Oracle 多表查询 --笛卡尔集--左连接--右连接--1999 语法--满外连接

Oracle 多表查询总结 笛卡尔集现象: 笛卡尔集会在下面条件下产生: – 省略连接条件 – 连接条件无效 – 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在where加入有效的连接条件。 Oracle 连接: 使用连接在多个表中查询数据。 在wher…

Oracle 数据库-分组函数总结

Oracle 分组函数 分组函数作用于一组数据,并对一组函数返回一个值。 组函数类型: avg,count,max,min,sum 可以对数值型数据使用avg和sum函数。 select avg(salary),min(salary),max(salary),sum(salary)…

在notepad++中配置java编译环境

在notepad中配置java编译环境 (1)首先,下载安装了Notepad,在菜单栏那里找到Plugin Manager,有一些版本是没有中文的,所有只有Plugin Manager,如果连Plugin Manager都没有,你则需要去…

Java 基础数据类型

Java 基础数据类型 Java的两大数据类型:基本数据类型、引用类型。 Java语言提供了八种基本数据类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 整形:byte&#xf…

Java获取系统时间

Java获取系统时间 Java获取系统时间 在java 中,有很多种方法都可以获取到系统的当前时间,但也需要到对应的类,不同的类自然有不同的方法。这里为大家介绍获取系统当前时间的四种方式。 1. 通过Calendar类来获取当前时间 需要引用…

Java单例模式的几种实现方式

Java单例模式的几种实现方式 在Java 中,单例类只能有一个实例,必须创建自己的唯一实例,单例类必须给所有其他对象提供这一实例。Java 单例模式有很多种实现方式,在这里给大家介绍单例模式其中的几种。分别是饿汉式,懒…

Java 中抽象类与接口

Java 抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类就是抽象类。 抽象类不能创建…

Java 中的进程与线程的实现

了解进程与线程: 进程: 当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程 中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单 位一般而言,进程包含如下三个特征&…

Java集合工具类:Collections

Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里 提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象实现同步控制等方法。 一、 排序操作 如下示例: public class CollectionsSor…

Java异常处理throws/throw

Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。 • Runtime异常:所有的RuntimeException类及其子类的实例; • Checked异常:不是RuntimeException类及其子类的异常实例。 只有Java语言提供…

JDBC 连接MYSQL数据库

1. 加载驱动 Class.forName("com.mysql.jdbc.Driver");com.mysql.jdbc 包名 Driver 驱动名,驱动包需要引入进来 mysql com.mysql.jdbc.Driveroracle oracle.jdbc.driver.OracleDriversqlserver com.microsoft.sqlserver.jdbc.SQLServerDriver …

JSP 之输出九九乘法表

JSP是一种建立在Servlet规范提供的功能之上的动态网页技术,允许在网页文件中嵌入java代码和jsp标记。Java 服务器页面 (Java Server Page ,JSP) 扩展名为 .jsp。 1.jsp的执行过程 Jsp文件在用户第一次请求时,会被编译成Servlet,然后由这个Se…

Java 重写与重载

方法的重写: 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申…

Java新增

在实践项目中我们有可能需要做到新增功能,新增一张表,或是新增多张表。这里我新增的是一张表。 这里主要描述DAO层与Servlet 层: DAO 层: public class UserDaoImpl implements UserDao {private Connection con null;private P…

JSP根据状态动态改变数据表格按钮

有时候在开发的过程中会遇到需要根据状态ID 来动态改变数据表格的按钮&#xff0c;下面我主要讲述两种表格根据ID改变按钮的方式。 下面这种我是用EL 表达式获取表格中的值&#xff1a; <table class"table table-striped table-bordered table-hover" id"s…

Java 模糊查询

在学习Java 这门语言过程中&#xff0c;会遇到无数的知识点与错误&#xff0c;最重要的是我们能够在茫茫的代码中找到突破口&#xff0c;并用心去汲取精华。 在很多时候我们会用到模糊查询&#xff0c;这里是我在编码过程中用到的模糊查询。 JSP &#xff1a; <input value…

Java删除表

Java删除表 这里页面我用了layui 框架做删除的&#xff0c;这里需要引入layui 的css 与js 插件&#xff0c;这里写出主要的代码。 Jsp &#xff1a; //监听行工具事件table.on(tool(test), function(obj){var data obj.data; //获得当前行数据var date1 data.classifyColum…

原始分页

Jsp &#xff1a; <div style"float: right;">当前为${currentPage}页&#xff0c;共有${totalRow}条数据&#xff0c;共${totalPage}页 <select style"border-radius: 18px;" id"pageSize" name"pageSize" onchange"c…

根据银行卡号判断银行卡是否正确与归属银行

校验过程&#xff1a; 1.从卡号的最后一位数字开始&#xff0c;逆向将奇数位&#xff08;1&#xff0c;3&#xff0c;5 等等相加&#xff09; 2.从卡号最后一位数字开始&#xff0c;逆向将偶数位数字&#xff0c;先乘以2&#xff0c;如果乘积为两位数&#xff0c;将个位数字相加…

根据年月日判断第多少天,星期几

1. 根据年月日判断第多少天 Scanner是SDK1.5新增的一个类,可使用该类创建一个对象。 Scanner scannernew Scanner(System.in);  然后scanner对象调用下列方法&#xff08;函数&#xff09;,读取用户在命令行输入的各种数据类型   next.Byte(),nextDouble(),nextFloat,nextIn…