- 浏览: 91105 次
文章分类
最新评论
常用的数据类型:数字(number|float)、日期(date|timestamp)、字符串(char|varchar2)
1、number(38) 最大位数38
number(7,2) = 12345.67
小数点后2位,不能是3位
2、float 二进制存储,不方便使用;但小数点可以任意浮动,是number的子类型
3、date 记录年、月、日、时、分、秒
4、timestamp 记录年、月、日、时、分、秒和纳秒
select systimestamp from dual;
alter session set nls_timestamp_tz_format='yyyy-mm-dd hh24:mi:ss.ff tzh:tzm';
5、char 定长 最小为1,最大为2000字节
6、varchar2 变长 最小为1,最大为4000字节
varchar 目前和VARCHAR2是一样的,但Oracle建议不要使用这个类型,因为将来另有他用。
英文总是单字节字符, 中、日、韩、俄、阿拉伯等文字,会占据至少两个字节,并在不同的字符集下,占据的字节数不完全一样;可以用lengthb来测试字符所占据的字节数
select lengthb('好的')from dual 4
函数:
CAST函数 -- 将某常量或变量的类型强制设为指定类型
select cast('1234' as number(9)) from dual;
select cast(12 as number(9)) from dual;
select cast(1.2345e4 as varchar(9)) from dual;
表示date的方法
select to_date('2013-02-09 23:59:59','yyyy-mm-dd hh24:mi:ss') from dual;
date'2013-02-09'
to_date中的分隔符可以更换, date中的分隔符必须是"-"号;date只可以表示日期,不可以表示时间
判断一个时间变量是否在某个范围?
select 'TRUE' from dual where to_date('2013-04-12 13:48:22','YYYY-MM-DD HH24:MI:SS') between date'2013-04-05' and date'2013-04-06'-1/86400;
1天=24小时=24*60*60=86400秒
select date'2013-04-06'-1/86400 from dual
2013/4/5 23:59:59
select date'2013-04-06'-1 from dual
2013/4/5
表示timestamp的方法
to_timestamp('2013-02-09 23:59:59.000','yyyy-mm-dd hh24:mi:ss.ff')
timestamp '2013-04-05 13:48:00.123456789'
to_timestamp中的分隔符可以更换, timestamp中的日期分隔符必须是"-",时间必须是:,秒后面必须跟上.timestamp可以精确表示到毫秒、微秒甚至纳秒级别
如何显示"2013年4月 17日"这样的日期
select to_char(sysdate,'YYYY"年"MM"月 "DD"日 "') from dual;
select to_char(sysdate,'YYYY"年"MM"月 "DD"日 " HH24"点"MI"分"')from dual;
select to_char(date'2013-04-06','YYYY"年"MM"月 "DD"日 "') from dual
select to_char(to_date('2013-02-09 23:59:59', 'yyyy-mm-dd hh24:mi:ss') ,' YYYY"年"MM"月 "DD"日 " HH24"点"MI"分" ') from dual
单行函数
此类函数可出现在select后的字段列表、 WHERE、 START WITH、 CONNECT BY、
GROUP BY和HAVING子句中
1、数字类
绝对值: abs(-300)
正负号: sign(-300) 返回值 1,0,1
舍入类: 向上取整 ceil(1.06)=2
向下取整 floor(1.9)=1
四舍五入 round(1.06)=1
截断 trunc(15.16, 1)=15.1, trunc(15.16, -1)=10
求余类: mod(7,2)=1
幂指类: 幂函数 power(2,10)=1024
指数函数 exp(1)= 2.718281828459045.……
对数函数 ln(2.718281828459045)=1
log(2,=3, log(2,1024)=10
三角类: 三角函数: cos、 sin、 tan……
反三角函数: acos、 asin、 atan……
双曲函数: sinh、 cosh、 tanh……
2、日期类
日期加法 直接相加(天) date'2013-01-01'+1/12=to_date('2013-01-01 02', 'yyyy-mm-dd hh24')
add_months函数 add_months(date'2010-02-27',24)= date'2012-02-27'
日期相减 直接相减(天) select date'2013-01-01'-1 from dual
date'2013-01-31'-to_date('2013-01-01 12:00:00','yyyy-mm-dd hh24:mi:ss')=29.5
months_between函数 months_between(date'2013-01-31',to_date('2010-11-01 12','yyyy-mm-dd hh24'))= 26.9516129
获取日期中的某个值 to_char函数
获取年 to_char(sysdate, 'yyyy')=2015
获取分 to_char(sysdate, 'mi')
extract函数
获取月 select extract(month from date'2015-03-31') from dual
extract(second from timestamp'2013-08-04 09:00:05')=5
(year, month, day, hour, minute, second)
日期舍入 trunc函数
trunc(to_date('12:35:35','hh24:mi:ss'),'MI')=to_date('12:35:00','hh24:mi:ss')
trunc(to_date('12:35:35','hh24:mi:ss'),'HH')=to_date('12:00','hh24:mi')
round函数
round(date'2013-04-17','MM')=date'2013-05-01'
round(to_date('12:35:25','hh24:mi:ss'),'MI')=to_date('12:35:00','hh24:mi:ss')
round(to_date('12:35:35','hh24:mi:ss'),'MI')=to_date('12:36:00','hh24:mi:ss')
3、字符串类
大小写转换 首字母大写 select initcap('skx') from dual
转大写 lower
转小写 upper
字符与ASCII码转换 select ASCII('s') from dual
select CHR(115) from dual
字符串连接 concat函数,同||操作符
select 'last'||'winner'||'' from dual;
select concat(concat('last','winner'),'') from dual;
字符串填补 LPAD、 RPAD函数
lpad('1234',9,'数')=' 数数1234'
rpad('1234',9,'数')='1234数数 '
字符串修剪
LTRIM和RTRIM函数: 默认从左或右去掉空格,从左或右去掉第一个参数中的字符,直到该字符不等于第二个参数中的任意字符
ltrim('aabdwecab', 'abcd')='wecab'
TRIM函数:默认去掉两端的空格,从左或/和右边去掉第二个参数指定的字符,仅一个
trim('a' from 'aabdwecaba')=bdwecab
取子串 substr('lastwinner@dataguru',5,6) = winner (从第五位开始,截取6位)
substr('lastwinner@dataguru',-5,6) =aguru
查找替换 INSTR函数
instr('lastwinner@dataguru','win')=5(查找)
replace函数 replace('Today is a good day. ',' ','##')=' Today##is##a##good##day.#### '
translate函数 select translate('acdd','cd','ef') from dual; -->aeff
利用TRANSLATE实现关键字的过滤
translate('(+0086-)010-68345678','0(+)-','0')=008601068345678
('1last34winn00er97是剑2破53冰45山4的5作5者之4453一45','l0123456789','l') =lastwinner是剑破冰山的作者之一
4、操作函数
返回最大值:greatest可跟若干参数( 类型可为数字、字符、日期等),返回其中的最大值,若参数中有一个NULL,则返回NULL,注意不要和MAX搞混
返回最小值 least
select greatest(sysdate, date'2013-12-31',to_date('13:12','mi:hh')+interval '1' year) from dual;
三目运算 nvl(a,b)--->if (a==null) return b; else return a;
nvl2(a,b,c)--->if (a==null) return c; else return b;
coalesce 返回参数中第一个非NULL的值。若参数都是NULL,则返回NULL
coalesce(expression_1, expression_2, ...,expression_n)
if-else:decode(x, 1, 'one', 2, 'two', null, 'NULL', 3,'three', 4,'four','数不过来了')
select decode(月份,'一月',1) from t
5、聚合函数
聚合前,用where过滤
聚合后,用having过滤
1、number(38) 最大位数38
number(7,2) = 12345.67
小数点后2位,不能是3位
2、float 二进制存储,不方便使用;但小数点可以任意浮动,是number的子类型
3、date 记录年、月、日、时、分、秒
4、timestamp 记录年、月、日、时、分、秒和纳秒
select systimestamp from dual;
alter session set nls_timestamp_tz_format='yyyy-mm-dd hh24:mi:ss.ff tzh:tzm';
5、char 定长 最小为1,最大为2000字节
6、varchar2 变长 最小为1,最大为4000字节
varchar 目前和VARCHAR2是一样的,但Oracle建议不要使用这个类型,因为将来另有他用。
英文总是单字节字符, 中、日、韩、俄、阿拉伯等文字,会占据至少两个字节,并在不同的字符集下,占据的字节数不完全一样;可以用lengthb来测试字符所占据的字节数
select lengthb('好的')from dual 4
函数:
CAST函数 -- 将某常量或变量的类型强制设为指定类型
select cast('1234' as number(9)) from dual;
select cast(12 as number(9)) from dual;
select cast(1.2345e4 as varchar(9)) from dual;
表示date的方法
select to_date('2013-02-09 23:59:59','yyyy-mm-dd hh24:mi:ss') from dual;
date'2013-02-09'
to_date中的分隔符可以更换, date中的分隔符必须是"-"号;date只可以表示日期,不可以表示时间
判断一个时间变量是否在某个范围?
select 'TRUE' from dual where to_date('2013-04-12 13:48:22','YYYY-MM-DD HH24:MI:SS') between date'2013-04-05' and date'2013-04-06'-1/86400;
1天=24小时=24*60*60=86400秒
select date'2013-04-06'-1/86400 from dual
2013/4/5 23:59:59
select date'2013-04-06'-1 from dual
2013/4/5
表示timestamp的方法
to_timestamp('2013-02-09 23:59:59.000','yyyy-mm-dd hh24:mi:ss.ff')
timestamp '2013-04-05 13:48:00.123456789'
to_timestamp中的分隔符可以更换, timestamp中的日期分隔符必须是"-",时间必须是:,秒后面必须跟上.timestamp可以精确表示到毫秒、微秒甚至纳秒级别
如何显示"2013年4月 17日"这样的日期
select to_char(sysdate,'YYYY"年"MM"月 "DD"日 "') from dual;
select to_char(sysdate,'YYYY"年"MM"月 "DD"日 " HH24"点"MI"分"')from dual;
select to_char(date'2013-04-06','YYYY"年"MM"月 "DD"日 "') from dual
select to_char(to_date('2013-02-09 23:59:59', 'yyyy-mm-dd hh24:mi:ss') ,' YYYY"年"MM"月 "DD"日 " HH24"点"MI"分" ') from dual
单行函数
此类函数可出现在select后的字段列表、 WHERE、 START WITH、 CONNECT BY、
GROUP BY和HAVING子句中
1、数字类
绝对值: abs(-300)
正负号: sign(-300) 返回值 1,0,1
舍入类: 向上取整 ceil(1.06)=2
向下取整 floor(1.9)=1
四舍五入 round(1.06)=1
截断 trunc(15.16, 1)=15.1, trunc(15.16, -1)=10
求余类: mod(7,2)=1
幂指类: 幂函数 power(2,10)=1024
指数函数 exp(1)= 2.718281828459045.……
对数函数 ln(2.718281828459045)=1
log(2,=3, log(2,1024)=10
三角类: 三角函数: cos、 sin、 tan……
反三角函数: acos、 asin、 atan……
双曲函数: sinh、 cosh、 tanh……
2、日期类
日期加法 直接相加(天) date'2013-01-01'+1/12=to_date('2013-01-01 02', 'yyyy-mm-dd hh24')
add_months函数 add_months(date'2010-02-27',24)= date'2012-02-27'
日期相减 直接相减(天) select date'2013-01-01'-1 from dual
date'2013-01-31'-to_date('2013-01-01 12:00:00','yyyy-mm-dd hh24:mi:ss')=29.5
months_between函数 months_between(date'2013-01-31',to_date('2010-11-01 12','yyyy-mm-dd hh24'))= 26.9516129
获取日期中的某个值 to_char函数
获取年 to_char(sysdate, 'yyyy')=2015
获取分 to_char(sysdate, 'mi')
extract函数
获取月 select extract(month from date'2015-03-31') from dual
extract(second from timestamp'2013-08-04 09:00:05')=5
(year, month, day, hour, minute, second)
日期舍入 trunc函数
trunc(to_date('12:35:35','hh24:mi:ss'),'MI')=to_date('12:35:00','hh24:mi:ss')
trunc(to_date('12:35:35','hh24:mi:ss'),'HH')=to_date('12:00','hh24:mi')
round函数
round(date'2013-04-17','MM')=date'2013-05-01'
round(to_date('12:35:25','hh24:mi:ss'),'MI')=to_date('12:35:00','hh24:mi:ss')
round(to_date('12:35:35','hh24:mi:ss'),'MI')=to_date('12:36:00','hh24:mi:ss')
3、字符串类
大小写转换 首字母大写 select initcap('skx') from dual
转大写 lower
转小写 upper
字符与ASCII码转换 select ASCII('s') from dual
select CHR(115) from dual
字符串连接 concat函数,同||操作符
select 'last'||'winner'||'' from dual;
select concat(concat('last','winner'),'') from dual;
字符串填补 LPAD、 RPAD函数
lpad('1234',9,'数')=' 数数1234'
rpad('1234',9,'数')='1234数数 '
字符串修剪
LTRIM和RTRIM函数: 默认从左或右去掉空格,从左或右去掉第一个参数中的字符,直到该字符不等于第二个参数中的任意字符
ltrim('aabdwecab', 'abcd')='wecab'
TRIM函数:默认去掉两端的空格,从左或/和右边去掉第二个参数指定的字符,仅一个
trim('a' from 'aabdwecaba')=bdwecab
取子串 substr('lastwinner@dataguru',5,6) = winner (从第五位开始,截取6位)
substr('lastwinner@dataguru',-5,6) =aguru
查找替换 INSTR函数
instr('lastwinner@dataguru','win')=5(查找)
replace函数 replace('Today is a good day. ',' ','##')=' Today##is##a##good##day.#### '
translate函数 select translate('acdd','cd','ef') from dual; -->aeff
利用TRANSLATE实现关键字的过滤
translate('(+0086-)010-68345678','0(+)-','0')=008601068345678
('1last34winn00er97是剑2破53冰45山4的5作5者之4453一45','l0123456789','l') =lastwinner是剑破冰山的作者之一
4、操作函数
返回最大值:greatest可跟若干参数( 类型可为数字、字符、日期等),返回其中的最大值,若参数中有一个NULL,则返回NULL,注意不要和MAX搞混
返回最小值 least
select greatest(sysdate, date'2013-12-31',to_date('13:12','mi:hh')+interval '1' year) from dual;
三目运算 nvl(a,b)--->if (a==null) return b; else return a;
nvl2(a,b,c)--->if (a==null) return c; else return b;
coalesce 返回参数中第一个非NULL的值。若参数都是NULL,则返回NULL
coalesce(expression_1, expression_2, ...,expression_n)
if-else:decode(x, 1, 'one', 2, 'two', null, 'NULL', 3,'three', 4,'four','数不过来了')
select decode(月份,'一月',1) from t
5、聚合函数
聚合前,用where过滤
聚合后,用having过滤
发表评论
-
17、nosql -- redis(一)简介
2015-04-01 11:09 483数据库发展史 --> 无库时代--> 层次状数据库 ... -
16、ER设计工具--powerdesigner
2015-03-30 14:09 1435entity-relationShip 1. 概念数据模型 ... -
15、pl/sql高级应用
2015-03-30 11:40 533now is null now is null now is ... -
14、oracle --sql 排名/相邻/统计函数
2015-03-30 09:49 12421、排名函数 排名的几个分析函数 row_number ... -
12、oracle--查询/连接/层次查询
2015-03-28 08:49 451实例;http://www.1keydata.com/cn/s ... -
11、oracle--pl/sql
2015-03-28 00:16 552JDBC, 全称为Java DataBase Con ... -
11、深入学习Oracle
2015-03-22 14:24 0Oracle是个高并发的软件; -
11、oracle用户/权限管理
2015-03-14 21:25 0create user c##2015 identified ... -
10、oracle的卸载与安装
2015-03-15 20:10 686安装了oracle发现编码不对,想找/Home0注册表也没找到 ... -
9、实现行列转换
2015-03-15 20:10 427行转列: 1、通过Oracle数据库自带的wm_c ... -
8、concat(str1,str2)连接多个数据
2015-03-15 20:10 537ex ; select concat(region_na ... -
7、union并/intersect交
2015-03-15 20:10 496union 跟 jion 有些许类似,因为这两个指令都可 ... -
6、查询消除重复数据distinct
2015-03-15 20:09 605ex: select distinct name,id fr ... -
5、外联查询
2015-03-14 10:33 6261、左联 left join a.name = b.name ... -
4、truncate清空表保留表结构
2015-03-14 10:08 887ex: truncate table test 这是个d ... -
3、简单的crud语句
2015-03-14 10:00 3271、update ex: update repeat ... -
2、in的用法
2015-03-14 09:59 494select t.* from repeat t where ... -
###.什么是持久化?
2015-03-11 13:08 0<转>http://cuisuqiang.it ... -
lll数据异常
2015-03-04 17:06 0Duplicate column name 'cat_id' ... -
lll.mysql建表设置utf-8
2015-03-04 16:15 0CREATE TABLE message( id int(10 ...
相关推荐
Oracle Sql 中常用字符串处理函数 Oracle Sql 中提供了多种字符串处理函数,用于对字符串进行各种操作,如大小写转换、截取、连接、查找、替换等。下面是 Oracle Sql 中常用的字符串处理函数: 1. 大小写转换函数 ...
在Oracle数据库中,将字符串转换为数字是一项常见的操作,特别是在处理包含数字的字符串列时,可能需要进行数值计算或按照数值大小进行排序。本篇文章将深入探讨如何在SQL查询中利用Oracle提供的函数来实现这一目标...
- `TO_CHAR/CONVERT`: Oracle 和 SQL Server 都提供了将数字转换为字符串的函数。 - `TO_NUMBER/CONVERT`: 将字符串转换为数字,两者都有对应函数。 - `TO_DATE/CONVERT`: 用于字符串到日期的转换,两者都有对应...
ORACLE 字符串函数 ORACLE 字符串函数是一组用于操作和处理字符串的函数,包括连接、截取、转换、查找、替换、去除空白等操作。 1. 字符串连接函数:`string || string` 该函数用于连接两个字符串,结果是一个新...
`TO_DATE()`和`TO_CHAR()`函数用于在日期和字符串之间进行转换。此外,还有`TRUNC()`函数的日期版本,它可以将日期截断到指定的部分(如年、月、日)。 聚合函数是数据库查询中的重要工具,它们用于对一组值进行...
本篇文章将深入探讨Oracle中用于拆分字符串的函数,并通过具体的示例展示它们的用法。 1. **instr() 函数** `instr()` 是Oracle中的一个内建函数,它用于查找子串在目标字符串中的位置。例如,`instr(string, ...
函数的输入参数包括 datepart、num 和 indate,其中 datepart 是一个字符串,表示要添加的时间间隔的类型,例如 year、quarter、month 等;num 是一个数字,表示要添加的时间间隔的数量;indate 是一个日期,表示要...
- Oracle 使用RPAD函数在字符串右侧填充字符,SQL Server 使用REPLICATE函数重复字符串。 - **SOUNDEX** - Oracle 和 SQL Server 均提供了SOUNDEX函数用于获取字符串的语音表示。 - **RPAD/SPACE** - Oracle ...
TRIM 函数在 T-SQL 中用于删除字符串两端的空格,在 PL/SQL 中使用 RTRIM 和 LTRIM 函数来删除字符串两端的空格。 SUBSTRING 函数在 T-SQL 中用于提取字符串的一部分,在 PL/SQL 中使用 SUBSTR 函数。 INSTR 函数...
### Oracle字符串处理函数详解 #### 1. ASCII ASCII函数用于返回给定字符的ASCII码值。例如: ``` SQL> select ascii('A') A, ascii('a') a, ascii('0') zero, ascii(' ') space from dual; AAZERO SPACE ------...
除了使用`TRANSLATE`函数之外,我们还可以编写一个自定义的PL/SQL函数来判断一个字符串是否可以被转换为数字。这种方法的优点是可以直接调用`TO_NUMBER`函数并捕获异常来判断。 **步骤**: 1. **创建函数**:创建...
### Oracle日期与字符串相互转换详解 #### 一、概述 在Oracle数据库中,日期与字符串之间的转换是一项常用且重要的操作。正确地进行日期与字符串之间的转换对于数据处理、查询优化等方面有着不可忽视的作用。本...
本文将围绕“Oracle过滤数字”这一主题展开,详细介绍如何在Oracle环境中实现对字符串中数字的过滤,并通过具体实例来帮助读者更好地理解和掌握相关技巧。 #### 一、Oracle过滤数字的基本原理 在Oracle中,可以...
- 函数(Functions):如聚合函数(SUM, AVG 等)和字符串处理函数。 #### 二、PL/SQL 概述 1. **定义**:PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了 SQL 命令和过程式编程语句,使得开发...
Oracle中的`concat()`函数是最基本的字符串连接方法。它接受两个或更多个字符串作为参数,并返回它们的连接结果。例如: ```sql SELECT concat(column1, ', ', column2) AS combined_string FROM table_name; `...
Oracle字符相似度函数是Oracle数据库系统提供的一种功能,用于评估两个字符串之间的相似性。这个功能在数据清洗、信息检索、文本分析等领域具有广泛的应用。在SQL查询中,我们可以直接使用这些函数来比较不同字符串...
二、Oracle字符串函数 字符串函数在处理文本数据时非常常用,如: 1. `length(str)`:返回字符串的长度。 2. `substr(str, start, length)`:返回字符串的一部分,从start位置开始,取length个字符。 3. `concat...
Oracle SQL内置函数是数据库操作中不可或缺的部分,它们用于处理各种数据类型,如数字、日期、字符串等。在Oracle 8i版本中,内置函数的丰富性使得数据处理更加灵活高效。以下是一些主要的内置函数及其说明: 1. **...
3. **字符串函数** - `LENGTH()`: 返回字符串的长度。 - `SUBSTR()`: 提取子字符串,例如`SUBSTR('Hello', 2, 3)`返回'ell'。 - `UPPER() / LOWER()`: 将字符串转换为大写或小写。 - `CONCAT()`: 连接两个或更多...
根据给定的信息,本文将对SQL Server与Oracle数据库系统中的函数进行详细对比分析,主要涉及数学函数、字符函数以及日期函数。以下是对这些知识点的具体展开: ### 数学函数 #### 绝对值 - **SQL Server**: 使用 `...