5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)
1
多行函数(理解:有多个输入,但仅仅输出1个结果)
SQL>select count(*) from emp;
COUNT(*)
-------------
14
B
字符函数Lower
select Lower('Hello')
转小写,
upper('hello')
转大写,
initcap('hello woRld')
首字母大写
from dual;
结果:
转小
转大
首字母大写
---------- -----------
helloHELLO Hello World
C字符函数 concat:
select
concat('hello','world') from dual
concat函数嵌套:
select concat (concat('hello', 'world'),'cccc') 函数嵌套 from dual;
函数嵌套
--------------
helloworldcccc
D字符函数 substr()
SUBSTR(a,b) ---
从a中第b位去字符串
substr(a, b, c)
从a中第b位,
c个字符....
select substr('abcdefg1111', 2)
从第二位取子串,
substr('abcdefg1111', 2, 4)
取4个字符
from dual;
从第二位取
取4
----------------- ------
bcdefg1111 bcde
E
length字符数
lengthb字节数
注意:一个中文字符,两个字节
select length('中国abc')
字符数,
lengthb('中国abc')
字节数
from dual;
执行结果:
字符数
字节数
---------- ----------
5
F instr(),lpad(),rpad(),trim()函数
select instr('abcdefg', 'efg') 求子串位置
from dual;
求子串位置
----------------
5
selectlpad('abcd', 10, '*') lpad, rpad('abcd', 10, '*') rpad from dual;
LPAD RPAD
---------- ----------
******abcd abcd******
--trim
去掉前后指定的字符,字符能够是空格,也能够不是空格
.
selecttrim('A' from 'ABCDEFg') from dual;
TRIM('
------
BCDEFg
2
数字函数
|
第二个參数 |
含义 |
|
2> 0 |
保留2位 |
|
= 0 |
保留到个位 |
|
-1 |
保留到10位 |
|
-2 |
保留到百位(要看十位 |
selectround(45.926, 2) AA,
round(45.926, 1) BB,
round(45.926, 0) CC,
round(45.926) DD,
round(45.926, -1) EE,
round(45.926, -2) FF
from dual;
结果:
AA
BB CC DD
EE FF
----------
---------- ----------
---------- ----------
----------
45.93 45.9
46 46 50
0
3
日期函数
时间的计算.......
oracle数据库中 date包括
日期和时间
mysql 3中数据类型 date
、time
、times.
A selectto_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual ;
TO_CHAR(SYSDATE,'YY
-------------------
2014-10-0716:34:17
B ----昨天今天明天
select sysdate-1 昨天,
sysdate
今天,
sysdate+1
明天
from dual;
selectto_char(sysdate-1, 'yyyy-mm-dd hh24:mi:ss') 昨天,
sysdate
今天,
sysdate+1
明天
from dual;
C ----查询员工的入职时间,依照
周
月
年
方式显示.....
select(sysdate-hiredate)/7 周,
(sysdate-hiredate)/30
月,
(sysdate-hiredate)/365
年
from emp;
select (sysdate-hiredate)/7
周,
(sysdate-hiredate)/30
月,
(sysdate-hiredate)/365
from emp;
周
月
年
---------- ----------
----------
1763.95625 411.589791 33.8292979
1754.67053 409.423125 33.6512157
1754.38482 409.356458 33.6457363
D 查询员工的入职时间,
入职月数
selectename,
(sysdate-hiredate)/30
预计月,
MONTHS_BETWEEN(sysdate, hiredate)
函数计算月
from emp
select ename,
(sysdate-hiredate)/30
预计月,
MONTHS_BETWEEN(sysdate, hiredate)
函数计算月
from emp;
ENAME
预计月
函数计算月
---------- ----------
----------
SMITH 411.589872 405.699876
ALLEN 409.423205 403.603102
WARD 409.356539 403.538586
JONES 408.056539 402.183747
MARTIN 402.089872 396.345037
selectnext_day(sysdate, '星期六') from dual ;
NEXT_DAY(SYSDA
--------------
11-10月-14
4
数据类型转换
select * from emp where hiredate >'01-1月 -81'
A
日期相关类型转换
比这个日期都要大的08-9月 -81
全部员工信息
依照三种方式实现
(1):隐式类型转换
select*
from emp
where hiredate > '01-1月 -81';
(2):字符串转成日期..显示类型转换
select*
from emp
where hiredate > to_date('1981-01-0102:03:04', 'yyyy-mm-dd hh24:mi:ss');
(3):日期转换成为日期类型的字符串:
select*
from emp
where to_char(hiredate, 'yyyy-mm-ddhh24:mi:ss') > '1981-01-01 02:03:04'
5
数字和字符串转换
A
--查询员工的薪水:两位小数
本地货币代码
千位符
Y1,250.00
select empno, ename, to_char(sal, 'L9,999.99')
fromemp
结果:
EMPNO ENAME TO_CHAR(SAL,'L9,999
---------- ---------- -------------------
7369SMITH ¥800.00
7499ALLEN ¥1,600.00
7521WARD ¥1,250.00
7566JONES ¥2,975.00
7654MARTIN ¥1,250.00
7698BLAKE ¥2,850.00
7782CLARK ¥2,450.00
B
把这个字符¥1,250.00,转成数字.....
select to_number('¥1,250.00','L9,999.99') from dual ;
TO_NUMBER('¥1,250.00','L9,999.99')
-----------------------------------
1250
6
通用函数
A
给员工涨工资:总裁 1000
经理:800
其它涨500,
===============================================
分析:前后工资给列出来
if (job == 'PRESIDENT')
SAL+1000
else if (job == 'MANAGER')
SAL+800
else
SAL+500
================================================
使用的知识点:
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THENreturn_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
===============================================
转化:
CASE job when 'PRESIDENT' then sal+1000
when'MANAGER' then sal+800
elsesal + 500
END
=============================================
select ename, job, sal
涨前工资,
(
CASE job when 'PRESIDENT' then sal+1000
when'MANAGER' then sal+800
elsesal + 500
END
)
涨后工资
from emp
-----------------------------------------------------------------------------------------------------
结果:
ENAME JOB 涨前工资
涨后工资
------------------- ---------- ----------
SMITH CLERK 800
1300
ALLEN SALESMAN 1600
2100
WARD SALESMAN 1250
1750
JONES MANAGER 2975
3775
MARTIN SALESMAN 1250
1750
BLAKE MANAGER 2850
3650
CLARK MANAGER 2450
3250
SCOTT ANALYST 3000
3500
KING PRESIDENT 5000
6000
TURNER SALESMAN 1500
2000
ADAMS CLERK 1100
1600
JAMES CLERK 950
1450
FORD ANALYST 3000
3500
MILLER CLERK 1300
1800
已选择14行。
B
另外一种方法
===================================================
语法:
DECODE(col|expression, search1, result1
[, search2, result2,...,]
[, default])
==================================================
转化:
decode(job, 'PRESIDENT', sal+10000, 'MANAGER', sal+800, sal+500)
===================================================
select ename, job, sal
涨前工资,
(
decode(job, 'PRESIDENT', sal+10000,'MANAGER', sal+800, sal+500)
)
涨后工资
from emp;
5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)的更多相关文章
- JS 数据类型转换-转换函数、强制类型转换、利用js变量弱类型转换
1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型 ...
- Linux常用C函数---字符串转换篇
函数讲解部分参考http://net.pku.edu.cn/~yhf/linux_c/ atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表 ...
- Eclipse-运行符-数据类型转换-环境变量配置
1.能够使用Eclipse快捷键 ctrl + / 单行注释:再按一次则取消: ctrl + shift + / 多行注释: ctrl + shift + \ 取消多行注释: ctrl + ...
- MySQL 进阶4 SQL常见函数: 字符函数/数学函数/日期函数/流程控制函数(if/case)
# 进阶4 SQL常见函数 分类: 1/单行函数: 字符函数: concat(),length(),ifnull(__,default) ,instr(), trim(),upper(),lower( ...
- C语言 自定义函数按行读入文件
在之前的博客中 https://www.cnblogs.com/mmtinfo/p/13036039.html 读取一行的getline()函数是GNU 的扩展函数. 这里用自定义函数实现这个功能,从 ...
- Oracle之单行函数(字符串函数/数字函数/转换函数/日期函数/通用函数)
虚拟表DUAL介绍: dual是一张虚拟表,只有一行一列,用来构成select的语法规则. Oracle的查询中,必须使用"select 列- from 表"的完整语法,当查询单行 ...
- js使用split函数按照多个字符对字符串进行分割的方法
这篇文章主要介绍了js使用split函数按照多个字符对字符串进行分割的方法,实例分析了split函数的使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了js使用split函数按照多个 ...
- ReportingService 通过RowNumber函数获取行号和生成隔行变色样式
以前一直没有搞明白SSRS里面的RowNumber函数到底该怎么用,所以一直没有很好的办法在SSRS中的表格上实现隔行变色的样式,实现隔行变色的关键就是获取表格中每一行的行号.在最近了解了下这个函数, ...
- MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用
在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用 -- 创建表 CREATE TABLE `tb ...
随机推荐
- 【DWR】Annotation入门
DWR简介:http://baike.baidu.com/view/73492.htm?fr=aladdin DWR2.0以后新增加了JDK5的注解(Annotation)功能,使用注解功能之后可以从 ...
- uVa 714 (二分法)
Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Description Before th ...
- USACO Money Systems Dp 01背包
一道经典的Dp..01背包 定义dp[i] 为需要构造的数字为i 的所有方法数 一开始的时候是这么想的 for(i = 1; i <= N; ++i){ for(j = 1; j <= V ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 同步fifo的verilogHDL设计实例
原创 设计一个fifo,输入16bit,输出16bit的data,寻址宽度5bit,有空满标志. top 层如下所示: /* date : 2014/10/14 version : modelsim ...
- 设计模式 ( 十七) 状态模式State(对象行为型)
设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...
- WebFetch 是无依赖极简网页爬取组件
WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api ...
- Pencil OJ 02 安装
Mongo 官方的安装方法 官方教程已经很好啦,这里就不罗嗦了. 源码编译 待补.我是从这里看到的. 遇到的问题 启动时的警告信息 2015-03-06T21:01:15.526-0800 I CON ...
- 学习MongoDB 二:MongoDB加入、删除、改动
一.简单介绍 MongoDB是一个高性能.开源.无模式的文档型数据库,是当前NoSQL数据库产品中最热门的一种.数据被分组存储在数据集中,被称为一个集合(Collenction)和对于存储在Mongo ...
- Matlab中S函数建立与应用
function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag) % SFUNTMPL 是M-文件 S函数模板 % 通过剪裁,用户可以生成自己的S函数,不过一定要重新命 ...