- 浏览: 60931 次
- 性别:
- 来自: 杭州
文章分类
最新评论
三. 字符函数(可用于字面字符或数据库列)
1,字符串截取
select substr('abcdef',1,3) from dual
2,查找子串位置
select instr('abcfdgfdhd','fd') from dual
3,字符串连接
select 'HELLO'||'hello world' from dual;
4, 1)去掉字符串中的空格
select ltrim(' abc') s1,
rtrim('zhang ') s2,
trim(' zhang ') s3 from dual
2)去掉前导和后缀
select trim(leading 9 from 9998767999) s1,
trim(trailing 9 from 9998767999) s2,
trim(9 from 9998767999) s3 from dual;
5,返回字符串首字母的Ascii值
select ascii('a') from dual
6,返回ascii值对应的字母
select chr(97) from dual
7,计算字符串长度
select length('abcdef') from dual
8,initcap(首字母变大写) ,lower(变小写),upper(变大写)
select lower('ABC') s1,
upper('def') s2,
initcap('efg') s3
from dual;
9,Replace
select replace('abc','b','xy') from dual;
10,translate
select translate('abc','b','xx') from dual; -- x是1位
11,lpad [左添充] rpad [右填充](用于控制输出格式)
select lpad('func',15,'=') s1, rpad('func',15,'-') s2 from dual;
select lpad(dname,14,'=') from dept;
12, decode[实现if ..then 逻辑] 注:第一个是表达式,最后一个是不满足任何一个条件的值
select deptno,decode(deptno,10,'1',20,'2',30,'3','其他') from dept;
例:
select seed,account_name,decode(seed,111,1000,200,2000,0) from t_userInfo//如果seed为111,则取1000;为200,取2000;其它取0
select seed,account_name,decode(sign(seed-111),1,'big seed',-1,'little seed','equal seed') from t_userInfo//如果seed>111,则显示大;为200,则显示小;其它则显
示相等
13 case[实现switch ..case 逻辑]
SELECT CASE X-FIELD
WHEN X-FIELD < 40 THEN 'X-FIELD 小于 40'
WHEN X-FIELD < 50 THEN 'X-FIELD 小于 50'
WHEN X-FIELD < 60 THEN 'X-FIELD 小于 60'
ELSE 'UNBEKNOWN'
END
FROM DUAL
注:CASE语句在处理类似问题就显得非常灵活。当只是需要匹配少量数值时,用Decode更为简洁。
四.数字函数
1,取整函数(ceil 向上取整,floor 向下取整)
select ceil(66.6) N1,floor(66.6) N2 from dual;
2, 取幂(power) 和 求平方根(sqrt)
select power(3,2) N1,sqrt(9) N2 from dual;
3,求余
select mod(9,5) from dual;
4,返回固定小数位数 (round:四舍五入,trunc:直接截断)
select round(66.667,2) N1,trunc(66.667,2) N2 from dual;
5,返回值的符号(正数返回为1,负数为-1)
select sign(-32),sign(293) from dual;
五.转换函数
1,to_char()[将日期和数字类型转换成字符类型]
1) select to_char(sysdate) s1,
to_char(sysdate,'yyyy-mm-dd') s2,
to_char(sysdate,'yyyy') s3,
to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') s4,
to_char(sysdate, 'hh24:mi:ss') s5,
to_char(sysdate,'DAY') s6
from dual;
2) select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp
2, to_date()[将字符类型转换为日期类型]
insert into emp(empno,hiredate) values(8000,to_date('2004-10-10','yyyy-mm-dd'));
3, to_number() 转换为数字类型
select to_number(to_char(sysdate,'hh12')) from dual; //以数字显示的小时数
六.其他函数
1.user:
返回登录的用户名称
select user from dual;
2.vsize:
返回表达式所需的字节数
select vsize('HELLO') from dual;
3.nvl(ex1,ex2):
ex1值为空则返回ex2,否则返回该值本身ex1(常用)
例:如果雇员没有佣金,将显示0,否则显示佣金
select comm,nvl(comm,0) from emp;
4.nullif(ex1,ex2):
值相等返空,否则返回第一个值
例:如果工资和佣金相等,则显示空,否则显示工资
select nullif(sal,comm),sal,comm from emp;
5.coalesce:
返回列表中第一个非空表达式
select comm,sal,coalesce(comm,sal,sal*10) from emp;
6.nvl2(ex1,ex2,ex3) :
如果ex1不为空,显示ex2,否则显示ex3
如:查看有佣金的雇员姓名以及他们的佣金
select nvl2(comm,ename,') as HaveCommName,comm from emp;
七.分组函数
max min avg count sum
1,整个结果集是一个组
1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和
select max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp where deptno=30;
2, 带group by 和 having 的分组
1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
select deptno, max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp group by deptno;
2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
select deptno, max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp group by deptno having deptno=30;
3, stddev 返回一组值的标准偏差
select deptno,stddev(sal) from emp group by deptno;
variance 返回一组值的方差差
select deptno,variance(sal) from emp group by deptno;
4, 带有rollup和cube操作符的Group By
rollup 按分组的第一个列进行统计和最后的小计
cube 按分组的所有列的进行统计和最后的小计
select deptno,job ,sum(sal) from emp group by deptno,job;
select deptno,job ,sum(sal) from emp group by rollup(deptno,job);
cube 产生组内所有列的统计和最后的小计
select deptno,job ,sum(sal) from emp group by cube(deptno,job);
八、临时表
只在会话期间或在事务处理期间存在的表.
临时表在插入数据时,动态分配空间
create global temporary table temp_dept
(dno number,
dname varchar2(10))
on commit delete rows;
insert into temp_dept values(10,'ABC');
commit;
select * from temp_dept; --无数据显示,数据自动清除
on commit preserve rows:在会话期间表一直可以存在(保留数据)
on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)
1,字符串截取
select substr('abcdef',1,3) from dual
2,查找子串位置
select instr('abcfdgfdhd','fd') from dual
3,字符串连接
select 'HELLO'||'hello world' from dual;
4, 1)去掉字符串中的空格
select ltrim(' abc') s1,
rtrim('zhang ') s2,
trim(' zhang ') s3 from dual
2)去掉前导和后缀
select trim(leading 9 from 9998767999) s1,
trim(trailing 9 from 9998767999) s2,
trim(9 from 9998767999) s3 from dual;
5,返回字符串首字母的Ascii值
select ascii('a') from dual
6,返回ascii值对应的字母
select chr(97) from dual
7,计算字符串长度
select length('abcdef') from dual
8,initcap(首字母变大写) ,lower(变小写),upper(变大写)
select lower('ABC') s1,
upper('def') s2,
initcap('efg') s3
from dual;
9,Replace
select replace('abc','b','xy') from dual;
10,translate
select translate('abc','b','xx') from dual; -- x是1位
11,lpad [左添充] rpad [右填充](用于控制输出格式)
select lpad('func',15,'=') s1, rpad('func',15,'-') s2 from dual;
select lpad(dname,14,'=') from dept;
12, decode[实现if ..then 逻辑] 注:第一个是表达式,最后一个是不满足任何一个条件的值
select deptno,decode(deptno,10,'1',20,'2',30,'3','其他') from dept;
例:
select seed,account_name,decode(seed,111,1000,200,2000,0) from t_userInfo//如果seed为111,则取1000;为200,取2000;其它取0
select seed,account_name,decode(sign(seed-111),1,'big seed',-1,'little seed','equal seed') from t_userInfo//如果seed>111,则显示大;为200,则显示小;其它则显
示相等
13 case[实现switch ..case 逻辑]
SELECT CASE X-FIELD
WHEN X-FIELD < 40 THEN 'X-FIELD 小于 40'
WHEN X-FIELD < 50 THEN 'X-FIELD 小于 50'
WHEN X-FIELD < 60 THEN 'X-FIELD 小于 60'
ELSE 'UNBEKNOWN'
END
FROM DUAL
注:CASE语句在处理类似问题就显得非常灵活。当只是需要匹配少量数值时,用Decode更为简洁。
四.数字函数
1,取整函数(ceil 向上取整,floor 向下取整)
select ceil(66.6) N1,floor(66.6) N2 from dual;
2, 取幂(power) 和 求平方根(sqrt)
select power(3,2) N1,sqrt(9) N2 from dual;
3,求余
select mod(9,5) from dual;
4,返回固定小数位数 (round:四舍五入,trunc:直接截断)
select round(66.667,2) N1,trunc(66.667,2) N2 from dual;
5,返回值的符号(正数返回为1,负数为-1)
select sign(-32),sign(293) from dual;
五.转换函数
1,to_char()[将日期和数字类型转换成字符类型]
1) select to_char(sysdate) s1,
to_char(sysdate,'yyyy-mm-dd') s2,
to_char(sysdate,'yyyy') s3,
to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') s4,
to_char(sysdate, 'hh24:mi:ss') s5,
to_char(sysdate,'DAY') s6
from dual;
2) select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp
2, to_date()[将字符类型转换为日期类型]
insert into emp(empno,hiredate) values(8000,to_date('2004-10-10','yyyy-mm-dd'));
3, to_number() 转换为数字类型
select to_number(to_char(sysdate,'hh12')) from dual; //以数字显示的小时数
六.其他函数
1.user:
返回登录的用户名称
select user from dual;
2.vsize:
返回表达式所需的字节数
select vsize('HELLO') from dual;
3.nvl(ex1,ex2):
ex1值为空则返回ex2,否则返回该值本身ex1(常用)
例:如果雇员没有佣金,将显示0,否则显示佣金
select comm,nvl(comm,0) from emp;
4.nullif(ex1,ex2):
值相等返空,否则返回第一个值
例:如果工资和佣金相等,则显示空,否则显示工资
select nullif(sal,comm),sal,comm from emp;
5.coalesce:
返回列表中第一个非空表达式
select comm,sal,coalesce(comm,sal,sal*10) from emp;
6.nvl2(ex1,ex2,ex3) :
如果ex1不为空,显示ex2,否则显示ex3
如:查看有佣金的雇员姓名以及他们的佣金
select nvl2(comm,ename,') as HaveCommName,comm from emp;
七.分组函数
max min avg count sum
1,整个结果集是一个组
1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和
select max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp where deptno=30;
2, 带group by 和 having 的分组
1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
select deptno, max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp group by deptno;
2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
select deptno, max(ename),max(sal),
min(ename),min(sal),
avg(sal),
count(*) ,count(job),count(distinct(job)) ,
sum(sal) from emp group by deptno having deptno=30;
3, stddev 返回一组值的标准偏差
select deptno,stddev(sal) from emp group by deptno;
variance 返回一组值的方差差
select deptno,variance(sal) from emp group by deptno;
4, 带有rollup和cube操作符的Group By
rollup 按分组的第一个列进行统计和最后的小计
cube 按分组的所有列的进行统计和最后的小计
select deptno,job ,sum(sal) from emp group by deptno,job;
select deptno,job ,sum(sal) from emp group by rollup(deptno,job);
cube 产生组内所有列的统计和最后的小计
select deptno,job ,sum(sal) from emp group by cube(deptno,job);
八、临时表
只在会话期间或在事务处理期间存在的表.
临时表在插入数据时,动态分配空间
create global temporary table temp_dept
(dno number,
dname varchar2(10))
on commit delete rows;
insert into temp_dept values(10,'ABC');
commit;
select * from temp_dept; --无数据显示,数据自动清除
on commit preserve rows:在会话期间表一直可以存在(保留数据)
on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)
发表评论
-
Oracle 直接操作一个字符的自增
2013-12-17 09:03 571新增一条语句,其中一个字段是每个月自增。例如:SP+20131 ... -
Oracle 触发器和自增
2013-12-17 09:03 532create sequence eos_serviceitem ... -
Oracle 创建表空间和临时表空间 创建用户
2017-07-18 17:30 397---修改表空间大小 alter database data ... -
Oracle 数据库的操作 截取字符 系统时间
2013-12-17 08:55 809截取前面为0的字符 select ltrim(substr( ... -
orale 创建表空间
2013-09-05 17:47 541---qns 临时表空间 create temporary t ... -
创建视图
2013-03-18 09:15 670如果需要查询数据,且查询的数据在几个表,这个几个表没外键关联, ... -
日期类型转换(2)
2013-01-25 15:24 79411 select to_char(sysd ... -
日期类型转换(1)
2013-01-25 15:23 661ORACLE日期时间函数大全 ORACLE日期时间函数大全 ... -
索引的操作
2012-08-09 15:24 732索引的用处: 建 ... -
case 的操作
2012-07-04 09:01 699select i.id, i.managebodyno, i. ... -
创建表和表的自增
2012-03-05 10:25 844-- 创建表(联合主键) -- serviceid 是用于自增 ... -
主键约束、唯一性约束、检查约束
2012-02-29 15:27 28201.约束定义了必须遵循的的用户维护数据一致性和正确性的规则,是 ... -
主键和唯一索引的区别
2012-02-29 15:24 989区别 主键是一种约束,唯一索引是一种索引,两者在本 ... -
char, varchar 和 varchar2的区别
2012-02-29 10:47 818区别: 1.CHAR的长度是固定的,而VARCHAR2 ... -
Integer 和Number的区别
2012-02-29 10:27 2051建表的时候,如果是浮点数,一般设置为 number(m,n ) ... -
创建主键的自增
2012-02-29 10:28 745create table serviceitems( serv ...
相关推荐
然而,直接在代码中处理这两个类型之间的转换可能会较为复杂,尤其是在涉及到用户界面展示或需要理解时间戳值时。因此,该工具的存在极大地简化了这个过程。 日期转long的转换涉及到将日期对象转换为对应的时间戳。...
详细描述和案例 一分钟理解日期类型转换和运算
2. **FromXXX()** 方法:与`ToXXX()`相反,用于将特定类型转换为其他类型,如`FromDate()`用于将日期字符串转换为`DateTime`对象。 3. **TryToXXX()** 和 `TryFromXXX()` 方法:模仿`TryParse()`模式,提供安全的...
- **日期类型** (`DATE`):表示日期值。 - **时间类型** (`TIME`):表示时间值。 - **日期时间类型** (`DATETIME`):表示日期和时间的组合值。 - **浮点数类型** (`DECIMAL`):表示固定精度的小数。 - **整数类型** ...
JSON转换为JAVA对象及日期格式转换处理 -
### C# 时间类型转换详解 在C#编程中,时间处理是常见的需求之一。本文将详细介绍如何使用`DateTime`类来进行各种时间类型的转换,并通过具体的示例代码来展示不同的转换方法及其应用场景。 #### 1. `DateTime` 类...
时间日期类型转换器是Struts2框架中的一个重要组件,它专门用于处理日期和时间格式的转换问题。 在Java中,日期和时间通常表示为`java.util.Date`或`java.time`包下的类,如`LocalDate`、`LocalTime`和`...
### MySQL中的类型转换 在MySQL中,类型转换是一项非常实用的功能,它可以帮助我们处理不同数据类型之间的转换,尤其是在处理如日期、数字与字符串等类型的相互转换时尤其有用。本文将详细介绍MySQL中常用的类型...
当需要将日期字段与其他非日期类型结合时,可能需要使用`CAST()`或`CONVERT()`。例如,将日期转换为整数(天数): ```sql SELECT CAST(myDate AS int) AS 'DaysSince1900' FROM myTable; ``` 6. 动态SQL和...
本文将深入探讨“ORACLE 自动类型转换”这一主题,以帮助理解Oracle如何处理不同类型的数据以及可能遇到的问题。 Oracle数据库支持多种数据类型,如数值型(NUMBER、INTEGER、BINARY_INTEGER等)、字符型(VARCHAR2...
总结一下,易语言的长整数与日期时间转换是通过"日期_到长整数"和"长整数_到日期"这两个内置函数实现的,它们为开发者提供了方便的方式来在日期时间对象和长整数之间进行转换。而"CopyMemory"和"CopyMemory2"函数...
这种转换通常分为两种类型:转换构造函数和成员转换函数,这两种方法都遵循C++的隐式类型转换规则。 首先,转换构造函数是一种特殊的构造函数,它的作用是将非本类类型的对象转换成本类的对象。在给定的代码示例中...
本文将深入探讨C#中的装箱、拆箱、别名、数值类型转换、字符编码转换、字符串与数值及数组之间的转换,以及日期型数据的转换。 1. **装箱、拆箱与别名** - **装箱** 是将值类型转换为对应的引用类型,例如 `int` ...
3. **数字类型转换**: - `int` 到 `char`: ```sql SELECT CONVERT(char(20), ytd_sales) FROM titles WHERE type = 'trad_cook'; ``` - `float` 到 `money`: ```sql SELECT CAST(10.3496 AS money); ``...
Java 的 Date 类型和 MySQL 的 DateTime 类型是两个不同的日期时间类型,需要将 Java 的 Date 类型转换为 MySQL 的 DateTime 类型以便在 MySQL 数据库中存储日期和时间信息。该方法可以高效地将 Java 的 Date 类型...
Date类型数据转换是Java编程语言中非常重要的一种数据类型转换。它可以将String类型的日期字符串转换为Date类型的日期对象,也可以将Date类型的日期对象转换为String类型的日期字符串。在本文中,我们将详细介绍Date...
### 自定义类型转换器 #### 一、概述 在Java编程中,经常需要处理不同数据类型之间的转换。例如,从用户界面获取的数据通常是字符串形式,而程序内部可能需要将其转换为日期、数字等其他类型。Struts2框架提供了一...
3. 泛型编程:尽可能利用模板和泛型编程,减少显式类型转换,提高代码的可读性和复用性。 4. 避免丢失精度:当从浮点类型转换为整数类型时,可能会丢失小数部分,需要注意潜在的数据损失。 总之,理解C++中的类型...
Struts2的内建类型转换涵盖了大部分常见类型,包括但不限于String、boolean/Boolean、char/Character、整数类型(int/Integer、float/Float、long/Long、double/Double)、日期(使用当前时区的SHORT格式)以及数组...
这种类型的转换器通常用于通用的数据类型转换,如日期格式转换等。全局类型转换器一旦配置好后,会在整个应用中被自动调用,无需在每个Action中重复定义。 #### 三、Struts2的自定义类型转换 自定义类型转换是...