【东软实训】SQL函数
SQL函数
SQL是用于访问和处理数据库的标准的计算机语言,我们所使用的的是Oracle SQL
一个数据库通常包含一个或多个表,每个表有一个名字表示,下图即为一个名为“emp”的表,接下来的操作都将基于以下的表进行
## 字符函数
字符函数:主要指参数类型是字符型,不同函数返回值可能是字符型或数值型
【大小写转换】
| 函数 | 效果 | 结果 |
|
LOWER('SQL Course') |
将大写或大小写混合的字符转换成小写 | sql course |
|
UPPER('SQL Course') |
将小写写或大小写混合的字符转换大写 | SQL COURSE |
| INITCAP('SQL Course') | 将每个单词的第一个字母转换成大写,其余的字母都转换成小写 | Sql course |
## 字符处理函数

## 数值函数

- DUAL:是一张虚表,不能保存任何数据,只有一个字段,一行记录。当我们不希望从任何表中读取数据,同时又想利用SQL引擎中的计算表达式的能力帮我们运算时,就可以使用DUAL表。
select ROUND(100.456,2),Round(100.456,0),Round(100.456,-1) from DUAL
## Date函数
默认的日期形式是: DD-MON-RR
我们可以在系统变量-环境变量中,添加 key = NLS_DATE_FORMAT value = YYYY:MM:DD HH24:MI:SS 就可以正常按照‘年与日’的格式查询了!

SELECT ename, sal, MONTHS_BETWEEN(SYSDATE,hiredate) months FROM emp ORDER BY months;
SELECT ename, sal, hiredate, ADD_MONTHS(hiredate,3) new_date FROM emp WHERE hiredate>'01-1月-82';
SELECT NEXT_DAY('2006-02-06','星期一') NEXT_DAY FROM DUAL;
SELECT LAST_DAY('02-2月-06') "LAST DAY" FROM DUAL;
SELECT empno, hiredate, ROUND(hiredate, 'MONTH') FROM emp WHERE SUBSTR(hiredate,-2,2)='';
SELECT empno, hiredate, TRUNC(hiredate, 'MONTH') FROM emp WHERE SUBSTR(hiredate,-2,2)='';
## 转换函数
【隐式数据类型转换规则】
- 不同的数据类型之间关联,如果不使用显式转换函数,则它会根据以下规则对数据进行隐式转换:
- 对于 INSERT 和 UPDATE 操作,oracle会把插入值或者更新值隐式转换为字段的数据类型
- 对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型
- 当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型
- 当比较字符型和日期型的数据时,oracle会把字符型转换为日期型
- 用连接操作符 (||)时,oracle会把非字符类型的数据转换为字符类型
- 如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,这些数据类型可能是number、date、rowid等
【显式数据类型转换规则】
- 通常是在字符类型、日期类型、数值类型之间进行显式转换。
- 主要的三种显式转换函数:TO_char TO_NUMBER TO_DATE
- To_char(日期格式模型)
- 必须用单引号引起来并且是大小写敏感的
- 可以包含任何有效的日期元素
- 使用逗号将日期型数据与日期型格式模型分隔开
- 日期格式模型的元素

- To_char用于日期型,用时间元素 格式化日期的事件部分

- To_char语句中也可以通过双引号添加字符串

- To_char作用于数值型,可以按照以下形式将数值型数据转化为变长的字符串:

- 栗子:
SELECT ename, TO_CHAR(hiredate, 'DD Month YYYY') HIREDATE FROM emp;
Select To_char(sal,'$99,999') Salary from emp where ename = 'Scott'
- To_number:可以将一个字符串转换成数值型数据
select to_number(1999) year from dual;
- To_Date: 将一个字符串转换成日期型数据
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
## 通用函数
- 通用函数即与空值(NULL)相关的一些函数,完成对空值(NULL)的一些操作。
- 主要包括以下函数:
- NVL:如果expr1不是null,返回expr1,否则返回expr2
SELECT ename, sal, comm, (sal*12)+NVL(comm,0) from emp
- NVL2:如果expr1不是null,返回expr2,否则返回expr3
- NULLIF:比较两个表达式,如果相等,返回null,否则,返回第一个表达式
- COALESCE: COALESCE (表达式1, 表达式2, ...,表达式n)函数是对NVL函数的扩展。COALESCE函数的功能是返回第一个不为空的参数,参数个数不受限制。
SELECT ename, COALESCE(comm, 0) comm , deptno FROM emp;
- NVL:如果expr1不是null,返回expr1,否则返回expr2
- 条件处理函数:
- CASE表达式:
SELECT ename, deptno,
(CASE deptno
WHEN 10 THEN '销售部'
WHEN 20 THEN '技术部'
WHEN 30 THEN '管理部'
ELSE '无' END)
deptname
FROM emp; - DECODE
SELECT ename, deptno,
decode(deptno,
10,'销售部',
20,'技术部',
30 , '管理部',
'无') deptname
FROM emp;
- CASE表达式:
【东软实训】SQL函数的更多相关文章
- 【东软实训】SQL多表链接
如果一个查询同时涉及两个以上的表,则称之为链接查询,链接查询是关系数据库中最主要的查询,主要包括等值链接查询.非等值链接查询.自身链接查询.外链接查询和复合条件链接查询. 这篇博文我们来对多表链接进行 ...
- 逆袭之旅DAY17.东软实训.Oracle.PLSQL.过程,函数,包,练习
2018-07-13 14:54:46 --1.创建一个包,包含一个为雇员加薪的过程,一个为雇员减薪的过程 CREATE OR REPLACE PACKAGE pac_test1 IS PROCEDU ...
- 逆袭之旅DAY14.东软实训.Oracle.多表连接、分组函数、子查询
2018-07-10 08:29:55 思考应用场景 异常数据的测试 6.显示能挣得奖金的雇员的姓名.工资.奖金,并以工资和奖金降序排列.select ename,sal,commfrom empWH ...
- 东软实训4-JDBC连接数据库
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...
- 【东软实训】SQLselect及其相关操作
SQL select 及相关操作 SQL是用于访问和处理数据库的标准的计算机语言,我们所使用的的是Oracle SQL 一个数据库通常包含一个或多个表,每个表有一个名字表示,下图即为一个名为“emp” ...
- 逆袭之旅DAY16.东软实训.Oracle.索引
2018-07-12 14:44:27 四.索引1.创建索引手动创建:create index 索引名 on 表名(列名,[列名,...])create table employee(pno numb ...
- 逆袭之旅DAY15.东软实训.Oracle.约束、序列、视图、索引、用户管理、角色
2018-07-11 08:26:00 有某个学生运动会比赛信息的数据库,保存了如下的表: 运动员sporter表:(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系dep ...
- 逆袭之旅DAY13.东软实训.Oracle.简单的查询语句.限制.排序
2018-07-09 21:34:00 一.简单查询: .查询数据表的所有列: SELECT * FROM 表名; SELECT 列名,列名.... FROM 表名; .起别名: SELECT 列名 ...
- 东软实训1 -jsp内置对象及其常用方法
JSP 的内置对象及方法详细说明 一. request 对象 客户端的请求信息被封装在 request 对象中,通过它才能了解到客户的需 求,然后做出响应.它是 HttpServletRequest ...
随机推荐
- 深入理解JMM(Java内存模型) --(一)
并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信 ...
- codeforces round#432 div2
C:这道题没做出来...写了个类似极角排序的东西被卡掉了...事实上暴力就行了,因为如果在二维平面内那么最多只能有4个点,因为每个象限只能有一个点,然后这里拓展一下就是最多只能有2*k个点,k是维数, ...
- 【412】Linux 系统编译 C 程序
1. 直接编译,会自动生成 a.out 文件,此文件即为可执行文件 # 编译 *.c 文件,生成可执行文件 a.out gcc euclide.c # 直接运行如下,如果没有输入和输出文件的话 # & ...
- 在Visual studio 中解除 TFS 的账号绑定
在Visual Studio中, 只要使用了TFS, 就会要求输入用户名密码验证 . 但是一旦点击验证对话框下部的:记住用户名密码 以后都不能再修改用户名了. 而且重装Visual Studio 听说 ...
- 【OpenJ_Bailian - 2192】Zipper(dfs)
Zipper Descriptions: Given three strings, you are to determine whether the third string can be forme ...
- hdu---------3189-------------------
水体一个,但是这种做题的方法值得发扬光大............ Just Do It Time Limit: / MS (Java/Others) Memory Limit: / K (Java/O ...
- 【洛谷2304_LOJ2134】[NOI2015]小园丁与老司机(动态规划_网络流)
题目: 洛谷 2304 LOJ 2134 (LOJ 上每个测试点有部分分) 写了快一天 -- 好菜啊 分析: 毒瘤二合一题 -- 注意本题(及本文)使用 \(x\) 向右,\(y\) 向上的「数学坐标 ...
- Acitivty四种启动模式
Acitivty的四种启动模式 在清单文件中声明 Activity 时,您可以使用 <activity> 元素的 launchMode 属性指定 Activity 应该如何与任务关联. l ...
- JAVA面试题最全集
JAVA面试题最全集 2009-01-19 15:40 3458人阅读 评论(0) 收藏 举报 java面试ejbservletstringhashmap 一.Java基础知识1.Java有那些基 ...
- SecureCRT 迁移到新环境,导出配置文件目录 转
SecureCRT 打开SecureCRT,点击菜单栏的“选项”--“全局选项” 在打开的窗口中,选择“常规”,在右侧找到“配置文件夹”,这个就是SecureCRT的配置文件目录. 复制这个路径并且进 ...
