ORACLE常用函数
RR
dd-Mon-rr
X
RRRR SS SSSSS WW W Y,YYY YEAR SYEAR YYYY SYYY YYY YY Y
dd-Mon-rrrr hh:mi:ss sssss WW W Mon dd,Y,YYY Mon dd,YEAY
X X X
Mon dd,YYYY
X
Oracle 8i数据库管理 8i数据库管理
SQL内置函数 SQL内置函数
WinnerSoft
SQL内置函数说明 SQL内置函数说明
Oracle 8i数据库管理 8i数据库管理
数字格式元素
元素
, G . D $ C L U 0 9 EEEE FM MI
WinnerSoft
说明
标定格式化数字中的位置 返回一组通过参数NLS_NUMERIC_CHARACTER设定的分隔符,这 是个对语言编程有限定作用的数值 标定格式化数字中的小数点位置 标定小数点(由参数NLS_NUMERIC_CHARACTER说明)的位置, 这是对语言编程有限定作用的数值 标定格式化数字前面美元符号的位置 标定当前字符(由参数NLS_ISO_CURRENCY说明)的位置,这是个 对语言编程有限定作用的数值 标定由参数NLS_CURRENCY说明的当前字符的位置 标定由参数NLS_UNION_CURRENCY说明的联合体当前的字符的位 置 标定格式化数字中试图显示前置零的位置 标定数字的位置。如果在数字格式中没有符号说明,正数的前面将 用一个空格代替对应负数的负号 得到一个由说明符定义的格式数据 格式化一个没有前置空格和尾随空格的数据 格式化一个有尾随符号的负数及尾随一空格的正数
Oracle 8i数据库管理 8i数据库管理
SQL内置函数BFILENAME
WinnerSoft
• BFILENAME BFILENAME函数返回一指向磁盘的物理文件的BFILE地 址。 其语法格式如下: BFILENAME(directory,filename) 其中: directory 一个包括指定文件的目录路径字符串。 该目录通过命令CREATE DIRECTORY产生。 但它不是一个操作系统目录 filename 指定目录中用户试图指定的文件名字。 该文件可以是预先不存在的文件 下面的例子解释了BFILENAME函数的使用情况: BFILENAME(‘gif_dir’,’book_photo.gif’)
Oracle 8i数据库管理 8i数据库管理
SQL内置函数ASIN
WinnerSoft
• ASIN ASIN函数返回一数值的反正弦值。结果以弧度表示, 且在-PI/2到PI/2之间。 其语法格式如下: ASIN(number) 其中:number必须是-1与1之间的值 下面的例子显示了1和-1的反正弦值: ASIN(1)=1.57 ASIN(-1)=-1.57
示例
999,999 999G999 9.99 9D99 $999 999.99 C999,999.99 L999,999.99 U999,999.99 0999 9.99 999.9EEEE Fm9.99 999,999MI
Oracle 8i数据库管理 8i数据库管理
数字格式元素
WinnerSoft
Oracle 8i数据库管理 8i数据库管理
SQL内置函数Acos
WinnerSoft
• ACOS ACOS函数返回一数值的反余弦值。结果以弧度表示, 且在0到PI之间。 其语法格式如下: ACOS(number) 其中,number必须是-1与1之间的值 下面的例子显示了1和-1 的反余弦值: ACOS(1)=0 ACOS(-1)=3.1415927(PI)
日期格式元素
WinnerSoft
一般地,日期格式说明符是不太敏感的。然而,当为 了显示而说明日期格式、对于文本数据中的说明符等 情况下,它就变得比较务实、具体了。以月份的名字 为例,通过下面引用的结果解释一下该情况的效果: TO_CHAR(SYSDATE,’MONTH’)=NOVEMBER TO_CHAR(SYSDATE,’Month’)=November TO_CHAR(SYSDATE,’month’)=november 当你键入的单词MONTH(月份)是大写字母时,月份名 字的结果就全部说明为大写。否则,如果串说明时的 首字母是大写,则返回的月份名首字母也是大写字母。 同样的规则也适用于下面的格式说明符:AD、AM、PM、 BC、DAY、DY、MON、RM和YEAR
WinnerSoft
返回一时代的缩写名称。该说明符仅用于有历法支持的时代, 例如,日本的天皇历法等 返回一时代的全名 返回小时数值(1-12) 返回小时数值(1-12) 返回小时数值(0-23) 返回一年中由ISO标准定义的星期数值 返回ISO年份数字,IYYY返回4位数年份值,IY返回最后2位 年份值 返回一数字,该数字为从1-Jan-4712 BC到当天的天数 返回一个分钟数值 返回一个月份数字 返回月份缩写 返回有9个字符宽度的月份全名 返回相应的季节号(数字),例如:1-3月返回1,4-6月返回2, 如此等等 返回一罗马数字月份
元素
PR RN M S TM
示例
999pr RN m S999,999 999,999s TM9 TME XXXX Xxxx 999v999
说明
格式化< >中的负数 将数据的格式定义为大写罗马数字 将数据的格式定义为小写罗马数字 将数据格式定义成:负数前面负号(-),正数前面置正号(+)将 符号置于数值后面,符号变成尾随符号 以最少的字符数为数值格式。其中,TM9时固定的注记方式,但 TME则需使用具体的说明。如果,在一超过64个字符的字符串中使 用了TM9,那么,说明的形式可以是任意的 返回16进制数。该16进制数字符(A-F)符合格式说明串的要求。使 用X返回大写的16进制数字(A-F),使用x返回小写的16进制数值 (a-f) 乘以10的x次方,其中,x是字符v后面字符9的个数
X X X
返回一星期序号1-7,星期日为1 返回9个字符宽度的星期全名 返回缩写的星期名 返回月份值
Oracle 8i数据库管理 8i数据库管理
日期格式元素
元素 DDD E EE HH HH12 HH24 IW IYYY IYY IY I J MI MM MON MONTH Q RM 示例 ddd yyy E EE HH:MI hh12:mi:ss HH24:MI IW dd-Mon-IY dd-Mon-IYYY J hh:mi:ss mm/dd/yy dd=Mon-yyyy Monrh dd,yyyy Q RM X X X X X X X X TO_DATE? 说明 返回年值
SQL内置函数ASCII
WinnerSoft
• ASCII ASCII函数返回你指向的字符串首字母的十进制表示代 表码值。该返回值或许是ASCII码值,也或许不是。如 果用户的数据库字符集是7位的ASCII值,那就得到一 ASCII码值。该返回值总是以用户使用的字符集为基础 的。 ASCII(string) 其中:string一个字符串。更多的时候就是一字符 下面的例子解释了该函数的使用: ASCII(‘j’)=74 ASCII(‘jeff’)=74 从上面的第二个例子,我们不难看出,如果指定了一 个多字符串,该函数将忽略除首字母外的所有字符。
Oracle 8i数据库管理 8i数据库管理
SQL内置函数ATAN
WinnerSoft
• ATAN ATAN函数返回一数值的反正切值。结果以弧度表示, 且在-PI/2到PI/2之间。 其语法格式如下: ATAN(number) 其中:number必须是-1与1之间的值 下面的例子显示了1和-1 的反正切值: ATAN(1)=0.7854 ATAN(-1)=-0.7854
Oracle 8i数据库管理 8i数据库管理
SQL内置函数Abs
WinnerSoft
• ABS ABS函数返回一数值的绝对值。负数将舍去其负号。下 面是它的语法格式: ABS(number) 其中,number是希望得到其绝对值的数值 ABS函数截去数值的符号。如下例所示: ABS(5)=5 ABS(5)=5 不管是5还是-5,其绝对值均为5。
示例
mm/dd/yy YYYY AD yyyy bc YYYY B.C. hh:mi am hh:mi a.m. hh:mi AM hh:mi pm hh:mi P.M. CC SCC D Day dd-Monyyyy Dy dd-Monyyyy dd-Mon-yyyy
X
X
标示上下午标志AM/PM的位置。在某时间区间是否加设该标 志,应该与所使用的格式说明符相一致 标示AM/PM的位置。该说明符与AM和A.M.的使用相同,但 不能用在函数TO_CHAR中 返回世纪数值。使用S可以在BC前面加一负号。2000年对应 20th世纪,20001年对应21th世纪
X
V
Oracle 8i数据库管理 8i数据库管理
日期格式元素
元素
_/,.;: AD A.D. in BC B.C. AM A.M. PM P.M. PM P.M. CC SCC D DAY DY DD
WinnerSoft
TO_DATE? 说明
X 在一日期当中设置一分隔标点。其实,在说明一日期格式时, 可以使用任意字符作为分隔标点 标示公元标志AD/BC的位置。在某时间内是否加设该标志, 应该与所使用的格式说明符相一致
Oracle 8i数据库管理 8i数据库管理
日期格式元素
元素 示例 TO_DATE? 说明
WinnerSoft
通过一个窗口(其位置可变)解释一个两位数字的年份。如 果,这个两位的数字年份小于50,那么,该年份将被解释为 下一世纪的年份数值。例如,假设当前年份是1999年,那么 日期1-Jan-2030 与RR相似,但也允许以4位数字输入年份。如果使用4位数表 示年份,则不允许修改。如果使用2位数字,则规则与RR相 同 返回秒值 返回超过午夜的秒数 返回相对一年中的星期数字 返回相对一个月中的星期数字 X 返回一带有逗号的年份数字,逗号后面是一千位数 返回一个逐字拼写的年份数值。加S对于公元前的年份前缀一 个负号(-) 返回年份数字,从1位到此4位。使用YYYY将得到全部4位年 份数字,而使用YY仅仅得到最后的两位,如此等等。负号 (-)被加到S前表示公元前的年份
ORACLE_分析函数大全
ORACLE_分析函数大全Oracle分析函数是一种高级SQL函数,它可以在查询中实现一系列复杂的分析操作。
这些函数可以帮助我们在数据库中执行各种数据分析和报表生成任务。
本文将介绍Oracle数据库中的一些常用分析函数。
1.ROW_NUMBER函数:该函数为查询结果中的每一行分配一个唯一的数字。
可以用它对结果进行排序或分组。
例如,可以使用ROW_NUMBER函数在结果集中为每个员工计算唯一的编号。
2.RANK和DENSE_RANK函数:这两个函数用于计算结果集中每个行的排名。
RANK函数返回相同值的行具有相同的排名,并且下一个排名值将被跳过。
DENSE_RANK函数类似,但是下一个排名值不会被跳过。
G和LEAD函数:LAG函数返回结果集中指定列的前一个(上一个)行的值,而LEAD函数返回后一个(下一个)行的值。
这些函数通常用于计算增长率或发现趋势。
4.FIRST和LAST函数:这两个函数用于返回结果集中分组的第一个和最后一个行的值。
可以与GROUPBY子句一起使用。
5.CUME_DIST函数:该函数用于计算给定值的累积分布。
它返回值的累积分布在结果集中的位置(百分比)。
6.PERCENT_RANK函数:该函数用于计算结果集中每个行的百分位数排名。
它返回值的百分位数排名(0到1之间的小数)。
7. NTILE函数:该函数用于将结果集分成指定数量的桶(Bucket),并为每个行分配一个桶号。
通常用于将数据分组为更小的块。
8.LISTAGG函数:该函数将指定列的值连接成一个字符串,并使用指定的分隔符分隔每个值。
可以用它将多个值合并在一起形成一个字符串。
9.AVG、SUM、COUNT和MAX/MIN函数:这些是常见的聚合函数,可以在分析函数中使用。
它们用于计算结果集中的平均值、总和、计数和最大/最小值。
以上只是Oracle数据库中的一些常用分析函数。
还有其他一些分析函数,如PERCENTILE_CONT、PERCENTILE_DISC等可以用于更高级的分析计算。
oracle常用函数使用大全Oracle除法(转)
oracle常⽤函数使⽤⼤全Oracle除法(转)/chenmeng2192089/article/details/9155625⼀、运算符算术运算符:+ - * / 可以在select 语句中使⽤连接运算符:|| select deptno|| dname from dept;⽐较运算符:> >= = != < <= like between is null in逻辑运算符:not and or集合运算符: intersect ,union, union all, minus要求:对应集合的列数和数据类型相同查询中不能包含long 列列的标签是第⼀个集合的标签使⽤order by时,必须使⽤位置序号,不能使⽤列名例:集合运算符的使⽤:intersect ,union, union all, minusselect * from emp intersect select * from emp where deptno=10 ;select * from emp minus select * from emp where deptno=10;select * from emp where deptno=10 union select * from emp where deptno in (10,20); --不包括重复⾏select * from emp where deptno=10 union all select * from emp where deptno in (10,20); --包括重复⾏⼆.ORACLE⽇期时间函数⼤全TO_DATE格式(以时间:2007-11-02 13:45:25为例)Year:yy two digits 两位年显⽰值:07yyy three digits 三位年显⽰值:007yyyy four digits 四位年显⽰值:2007Month:mm number 两位⽉显⽰值:11mon abbreviated 字符集表⽰显⽰值:11⽉,若是英⽂版,显⽰novmonth spelled out 字符集表⽰显⽰值:11⽉,若是英⽂版,显⽰novemberDay:dd number 当⽉第⼏天显⽰值:02ddd number 当年第⼏天显⽰值:02dy abbreviated 当周第⼏天简写显⽰值:星期五,若是英⽂版,显⽰friday spelled out 当周第⼏天全写显⽰值:星期五,若是英⽂版,显⽰fridayddspth spelled out, ordinal twelfthHour:hh two digits 12⼩时进制显⽰值:01hh24 two digits 24⼩时进制显⽰值:13Minute:mi two digits 60进制显⽰值:45Second:ss two digits 60进制显⽰值:25其它Q digit 季度显⽰值:4WW digit 当年第⼏周显⽰值:44W digit 当⽉第⼏周显⽰值:124⼩时格式下时间范围为: 0:00:00 - 23:59:59....12⼩时格式下时间范围为: 1:00:00 - 12:59:59 ....1. ⽇期和字符转换函数⽤法(to_date,to_char)select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //⽇期转化为字符串select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的⽉select to_char(sysdate,'dd') as nowDay from dual; //获取时间的⽇select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//2. select to_char( to_date(222,'J'),'Jsp') from dual显⽰Two Hundred Twenty-Two3.求某天是星期⼏select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;星期⼀select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;monday设置⽇期语⾔ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';也可以这样TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')4. 两个⽇期间的天数select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;5. 时间为null的⽤法select id, active_date from table1UNIONselect 1, TO_DATE(null) from dual;注意要⽤TO_DATE(null)6.⽉份差a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')那么12⽉31号中午12点之后和12⽉1号的12点之前是不包含在这个范围之内的。
oralce函数
oralce函数Oracle是一种关系数据库管理系统,它使用了一种名为Oracle数据库的数据库管理系统。
Oracle是一种强大的工具,提供了许多内置函数,可以用于在数据库中进行各种操作。
以下是一些常用的Oracle函数。
1.聚合函数-AVG:计算指定列的平均值。
-COUNT:计算指定列中非空数据的数量。
-SUM:计算指定列的总和。
-MAX:找到指定列的最大值。
-MIN:找到指定列的最小值。
2.字符串函数-CONCAT:将两个字符串连接成一个字符串。
-LOWER:将字符串转换为小写。
-UPPER:将字符串转换为大写。
-LENGTH:计算字符串的长度。
-SUBSTR:返回一个字符串的子字符串。
3.数值函数-ROUND:将一个数值四舍五入到指定的小数位数。
-CEIL:向上取整,返回不小于指定数值的最小整数。
-FLOOR:向下取整,返回不大于指定数值的最大整数。
-ABS:返回指定数值的绝对值。
-MOD:返回两个数值的余数。
4.日期和时间函数-SYSDATE:返回当前日期和时间。
-ADD_MONTHS:在指定日期上增加指定的月份。
-TRUNC:截断日期或时间到指定的精度。
-MONTHS_BETWEEN:计算两个日期之间的月数差。
-TO_CHAR:将日期转换为指定格式的字符串。
5.条件函数-DECODE:根据条件返回不同的值。
-CASE:根据条件执行不同的操作。
-NVL:如果给定的表达式为NULL,则将其替换为指定的值。
-NULLIF:如果两个表达式的值相等,则返回NULL。
6.分析函数-ROW_NUMBER:为每一行分配一个唯一的数字。
-RANK:为每一行分配一个排名,如果有并列的值,则排名相同。
-DENSE_RANK:为每一行分配一个排名,如果有并列的值,则排名可以重复。
-LEAD:返回指定行后的值。
-LAG:返回指定行前的值。
上述函数只是Oracle提供的一小部分功能,Oracle还提供了许多其他有用的函数。
oracle统计个数的函数
Oracle统计个数的函数在Oracle数据库中,有几个特定的函数可以用于统计个数。
这些函数可以用于计算满足特定条件的行数或返回不同值的个数。
以下是一些常用的统计个数的函数:•COUNT()•COUNT(DISTINCT)•SUM(CASE WHEN … THEN …)•GROUP BY和HAVING子句下面将详细解释每个函数的定义、用途和工作方式。
1. COUNT()定义: COUNT()函数用于计算满足特定条件的行数。
用途: COUNT()函数可以用于计算表中满足特定条件的行数,也可以用于计算表中的所有行数。
工作方式: COUNT()函数的语法如下:COUNT(expression)其中,expression是要计算行数的列或表达式。
COUNT()函数返回一个整数,表示满足条件的行数。
如果不指定expression,COUNT()函数将计算表中的所有行数。
如果指定expression,COUNT()函数将计算满足expression条件的行数。
示例:-- 计算表中的所有行数SELECT COUNT(*) FROM employees;-- 计算满足特定条件的行数SELECT COUNT(*) FROM employees WHERE salary > 5000;2. COUNT(DISTINCT)定义: COUNT(DISTINCT)函数用于计算不同值的个数。
用途: COUNT(DISTINCT)函数可以用于计算表中某列的不同值的个数。
工作方式: COUNT(DISTINCT)函数的语法如下:COUNT(DISTINCT expression)其中,expression是要计算不同值个数的列或表达式。
COUNT(DISTINCT)函数返回一个整数,表示不同值的个数。
示例:-- 计算表中某列的不同值个数SELECT COUNT(DISTINCT department_id) FROM employees;3. SUM(CASE WHEN … THEN …)定义:SUM(CASE WHEN … THEN …)函数用于根据条件计算列的和。
oracle常用的分析函数
oracle常⽤的分析函数常⽤的分析函数如下所列:row_number() over(partition by ... order by ...)rank() over(partition by ... order by ...)dense_rank() over(partition by ... order by ...)count() over(partition by ... order by ...)max() over(partition by ... order by ...)min() over(partition by ... order by ...)sum() over(partition by ... order by ...)avg() over(partition by ... order by ...)first_value() over(partition by ... order by ...)last_value() over(partition by ... order by ...)lag() over(partition by ... order by ...)lead() over(partition by ... order by ...)⼀、Oracle分析函数简介:在⽇常的⽣产环境中,我们接触得⽐较多的是OLTP系统(即Online Transaction Process),这些系统的特点是具备实时要求,或者⾄少说对响应的时间多长有⼀定的要求;其次这些系统的业务逻辑⼀般⽐较复杂,可能需要经过多次的运算。
⽐如我们经常接触到的电⼦商城。
在这些系统之外,还有⼀种称之为OLAP的系统(即Online Aanalyse Process),这些系统⼀般⽤于系统决策使⽤。
通常和数据仓库、数据分析、数据挖掘等概念联系在⼀起。
这些系统的特点是数据量⼤,对实时响应的要求不⾼或者根本不关注这⽅⾯的要求,以查询、统计操作为主。
oracle常用聚集函数
oracle常用聚集函数Oracle是数据库管理系统中的一种,支持众多的聚集函数,这些聚集函数能够按照特定规则将行组合为单个结果值。
以下是Oracle中比较常用的聚集函数。
1. AVG函数:用于计算数值列的平均值。
语法:AVG(column_name)2. COUNT函数:用于计算指定列中的行数。
可以使用COUNT(*)来计算表中的所有行数。
语法:COUNT(column_name)3. MAX函数:用于查找数值列中的最大值。
语法:MAX(column_name)4. MIN函数:用于查找数值列中的最小值。
语法:MIN(column_name)5. SUM函数:用于计算数值列的总和。
语法:SUM(column_name)其中,AVG、SUM、MAX和MIN等函数可以用于数字列,而COUNT也可以用于任何列(字符串、数字等)。
除了以上常用的聚集函数外,Oracle还支持其他聚集函数,如STDDEV、VARIANCE等。
STDDEV函数返回给定数列的标准差,VARIANCE函数返回给定数列的方差。
需要注意的是,在使用聚集函数时,必须指定分组条件。
使用GROUP BY关键字指定分组条件,以便使聚集函数仅作用于指定的数据子集上。
例如:SELECT department, AVG(salary)FROM employeesGROUP BY department;以上代码将返回每个部门的平均工资,因为使用了GROUP BY部门。
总之,Oracle中的聚集函数可以大大简化复杂查询的编写,帮助开发者更高效地进行数据分析和处理。
以上介绍的聚集函数是Oracle常用聚集函数中的一部分,也是开发者在使用Oracle进行数据查询时需要了解的重要知识点。
ORACLE统计函数大全
【一】、Oracle常用的统计函数Avg(x):求一组行中列x值的平均值count(x):求一组行中列x值的非空行数count(*):求一组行的总行数max(x):求一组行中列x值的最大值min(x):求一组行中列x值的最小值stddev(x):求一组行中列x值的标准差sum(x):求一组行中列x值的总和variance(x):求一组行中列x值的方差【二】、group by与统计函数使用上面介绍的函数时可以使用也可以不使用group by ,但在使用group by时,未在group by部分用到的列在select 部分出现时必须使用统计函数,如按角色统计平均年龄Select user_name,avg(age) from usersGroup by role_id; ×Select count(user_name),avg(age) from usersGroup by role_id√【三】、用having字句规定统计条件having 子句的作用类似于where子句,只不过where 子句针对单个行,而having子句针对的是统计结果,一般和统计的函数搭配使用。
Having子句后必须为前面select后面的子部分,或是group by 后面的字段select count(uer_name),avg(age) from users group by role_id having role_id>20; ×select count(uer_name),avg(age) from users group by role_id having avg(age)>20; √【四】其他oracle常用函数Decode(column1,value1,output1,value2,output2,…..)如果column1 有一个值为value1那么将会用output1 来代替当前值,如果column1 的值为value2 那么就用OUTPUT2 来代替当前值,如果column1 中哪两个值都不是,那么就会用OUTPUT3 来代替当前值Select decode(age,10,7,9,6,3),user_name from users;SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii(’A’) A,ascii(’a’) a,ascii(’0’) zero,ascii(’ ’) space from dual;A A ZERO SPACE--------- --------- --------- ---------65 97 48 322.CHR给出整数,返回对应的字符;SQL> select chr(54740) zhao,chr(65) chr65 from dual;ZH C-- -赵 A3.CONCAT连接两个字符串;SQL> select concat(’010-’,’88888888’)||’转23’ 高乾竞电话from dual;高乾竞电话----------------************转234.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL> select initcap(’smith’) upp from dual;UPP-----Smith5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1 被搜索的字符串C2 希望搜索的字符串I 搜索的开始位置,默认为1J 出现的位置,默认为1SQL> select instr(’oracle traning’,’ra’,1,2) instring from dual;INSTRING---------96.LENGTH返回字符串的长度;SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))------ ------------ ---------------- ------------ --------- --------------------高乾竞 3 北京市海锭区6 9999.99 77.LOWER返回字符串,并将所有的字符小写SQL> selec t lower(’AaBbCcDd’)AaBbCcDd from dual;AABBCCDDaabbccdd8.UPPER返回字符串,并将所有的字符大写SQL> select upper(’AaBbCcDd’) upper from dual;UPPER--------AABBCCDD9.RPAD和LPAD(粘贴字符)RPAD 在列的右边粘贴字符LPAD 在列的左边粘贴字符SQL> select lpad(rpad(’gao’,10,’*’),17,’*’)from dual;LPAD(RPAD(’GAO’,1-----------------*******gao*******不够字符则用*来填满10.LTRIM和RTRIMLTRIM 删除左边出现的字符串RTRIM 删除右边出现的字符串SQL> select ltrim(rtrim(’ gao qian jing ’,’ ’),’ ’) from dual;LTRIM(RTRIM(’-------------gao qian jing11.SUBSTR(string,start,count)取子字符串,从start开始,取count个SQL> select substr(’130****8888’,3,8)from dual;SUBSTR(’--------0888888812.REPLACE(’string’,’s1’,’s2’)string 希望被替换的字符或变量s1 被替换的字符串s2 要替换的字符串SQL> select replace(’he love you’,’he’,’i’) from d ual;REPLACE(’H----------i love you13.SOUNDEX返回一个与给定的字符串读音相同的字符串SQL> create table table1(xm varchar(8));SQL> insert into table1 values(’weather’);SQL> insert into table1 values(’wether’);SQL> insert into table1 values(’gao’);SQL> select xm from table1 where soundex(xm)=soundex(’weather’);--------weatherwether14.TRIM(’s’ from ’string’)LEADING 剪掉前面的字符TRAILING 剪掉后面的字符如果不指定,默认为空格符15.ABS返回指定值的绝对值SQL> select abs(100),abs(-100) from dual; ABS(100) ABS(-100)--------- ---------100 10016.ACOS给出反余弦的值SQL> select acos(-1) from dual;ACOS(-1)---------3.141592717.ASIN给出反正弦的值SQL> select asin(0.5) from dual;ASIN(0.5)---------.5235987818.ATAN返回一个数字的反正切值SQL> select atan(1) from dual;ATAN(1)---------.7853981619.CEIL返回大于或等于给出数字的最小整数SQL> select ceil(3.1415927) from dual; CEIL(3.1415927)---------------420.COS返回一个给定数字的余弦SQL> select cos(-3.1415927) from dual; COS(-3.1415927)----------------121.COSH返回一个数字反余弦值SQL> select cosh(20) from dual;COSH(20)---------24258259822.EXP返回一个数字e的n次方根SQL> select exp(2),exp(1) from dual;EXP(2) EXP(1)--------- ---------7.3890561 2.718281823.FLOOR对给定的数字取整数SQL> select floor(2345.67) from dual;FLOOR(2345.67)--------------234524.LN返回一个数字的对数值SQL> select ln(1),ln(2),ln(2.7182818) from dual;LN(1) LN(2) LN(2.7182818)--------- --------- -------------0 .69314718 .9999999925.LOG(n1,n2)返回一个以n1为底n2的对数SQL> select log(2,1),log(2,4) from dual;LOG(2,1) LOG(2,4)--------- ---------0 226.MOD(n1,n2)返回一个n1除以n2的余数SQL> select mod(10,3),mod(3,3),mod(2,3) from dual; MOD(10,3) MOD(3,3) MOD(2,3)--------- --------- ---------1 0 227.POWER返回n1的n2次方根SQL> select power(2,10),power(3,3) from dual; POWER(2,10) POWER(3,3)----------- ----------1024 2728.ROUND和TRUNC按照指定的精度进行舍入SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual; ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)----------- ------------ ----------- ------------56 -55 55 -5529.SIGN取数字n的符号,大于0返回1,小于0返回-1,等于0返回0SQL> select sign(123),sign(-100),sign(0) from dual;SIGN(123) SIGN(-100) SIGN(0)--------- ---------- ---------1 -1 030.SIN返回一个数字的正弦值SQL> select sin(1.57079) from dual;SIN(1.57079)------------131.SIGH返回双曲正弦的值SQL> select sin(20),sinh(20) from dual;SIN(20) SINH(20)--------- ---------.91294525 24258259832.SQRT返回数字n的根SQL> select sqrt(64),sqrt(10) from dual;SQRT(64) SQRT(10)--------- ---------8 3.162277733.TAN返回数字的正切值SQL> select tan(20),tan(10) from dual;TAN(20) TAN(10)--------- ---------2.2371609 .6483608334.TANH返回数字n的双曲正切值SQL> select tanh(20),tan(20) from dual;TANH(20) TAN(20)--------- ---------1 2.237160935.TRUNC按照指定的精度截取一个数SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;TRUNC1 TRUNC(124.16666,2)--------- ------------------100 124.1636.ADD_MONTHS增加或减去月份SQL> select to_char(add_months(to_date(’199912’,’yyyymm’),2),’yyyymm’) from dual;TO_CHA------200002SQL> s elect to_char(add_months(to_date(’199912’,’yyyymm’),-2),’yyyymm’) from dual;TO_CHA------199910ST_DAY返回日期的最后一天SQL> select to_char(sysdate,’yyyy.mm.dd’),to_char((sysdate)+1,’yyyy.mm.dd’) from dual;TO_CHAR(SY TO_CHAR((S---------- ----------2004.05.09 2004.05.10SQL> select last_day(sysdate) from dual;LAST_DAY(S----------31-5月-0438.MONTHS_BETWEEN(date2,date1)给出date2-date1的月份SQL> select months_between(’19-12月-1999’,’19-3月-1999’) mon_between from dual;MON_BETWEEN-----------9SQL>selectmonths_between(to_date(’2000.05.20’,’yyyy.mm.dd’),to_date(’2005.05.20’,’yyyy.mm.dd’)) mon_betw from dual; MON_BETW----------6039.NEW_TIME(date,’this’,’that’)给出在this时区=other时区的日期和时间SQL> select to_char(sysdate,’yyyy.mm.dd hh24:mi:ss’) bj_time,to_char(new_time2 (sysdate,’PDT’,’GMT’),’yyyy.mm.dd hh24:mi:ss’) los_angles from dual;BJ_TIME LOS_ANGLES------------------- -------------------2004.05.09 11:05:32 2004.05.09 18:05:32给出日期date和星期x之后计算下一个星期的日期S QL> select next_day(’18-5月-2001’,’星期五’) next_day from dual; NEXT_DAY----------25-5月-0141.SYSDATE用来得到系统的当前日期SQL> select to_char(sysdate,’dd-mm-yyyy day’) from dual;TO_CHAR(SYSDATE,’-----------------09-05-2004 星期日trunc(date,fmt)按照给出的要求将日期截断,如果fmt=’mi’表示保留分,截断秒SQL> select to_char(trunc(sysdate,’hh’),’yyyy.mm.dd hh24:mi:ss’) hh,2 to_char(trunc(sysdate,’mi’),’yyyy.mm.dd hh24:mi:ss’) hhmm from dual; HH HHMM------------------- -------------------2004.05.09 11:00:00 2004.05.09 11:17:0042.CHARTOROWID将字符数据类型转换为ROWID类型SQL> select rowid,rowidtochar(rowid),ename from scott.emp;ROWID ROWIDTOCHAR(ROWID) ENAME------------------ ------------------ ----------AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES43.CONVERT(c,dset,sset)将源字符串sset从一个语言字符集转换到另一个目的dset字符集SQL> select convert(’strutz’,’we8hp’,’f7dec’) "conversion" from dual; conver------strutz44.HEXTORAW将一个十六进制构成的字符串转换为二进制45.RAWTOHEXT将一个二进制构成的字符串转换为十六进制46.ROWIDTOCHAR将ROWID数据类型转换为字符类型47.TO_CHAR(date,’format’)SQL> select to_char(sysdate,’yyyy/mm/dd hh24:mi:ss’) from dual;TO_CHAR(SYSDATE,’YY-------------------2004/05/09 21:14:41将字符串转化为ORACLE中的一个日期49.TO_MULTI_BYTE将字符串中的单字节字符转化为多字节字符SQL> select to_multi_byte(’高’) from dual;TO--高50.TO_NUMBER将给出的字符转换为数字SQL> select to_number(’1999’) year from dual;YEAR---------199951.BFILENAME(dir,file)指定一个外部二进制文件SQL>insert into file_tb1 values(bfilename(’lob_dir1’,’image1.gif’));52.CONVERT(’x’,’desc’,’source’)将x字段或变量的源source转换为descSQL> select sid,serial#,username,decode(command,2 0,’none’,3 2,’insert’,4 3,5 ’select’,6 6,’update’,7 7,’delete’,8 8,’drop’,9 ’other’) cmd from v$session where type!=’background’;SID SERIAL# USERNAME CMD--------- --------- ------------------------------ ------1 1 none2 1 none3 1 none4 1 none5 1 none6 1 none7 1275 none8 1275 none9 20 GAO select10 40 GAO none53.DUMP(s,fmt,start,length)DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值SQL> col global_name for a30SQL> col dump_string for a50SQL> set lin 200SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name; GLOBAL_NAME DUMP_STRING------------------------------ --------------------------------------------------ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D54.EMPTY_BLOB()和EMPTY_CLOB()这两个函数都是用来对大数据类型字段进行初始化操作的函数55.GREATEST返回一组表达式中的最大值,即比较字符的编码大小.SQL> select greatest(’AA’,’AB’,’AC’) from dual;GR--ACSQL> select greatest(’啊’,’安’,’天’) from dual;GR--天56.LEAST返回一组表达式中的最小值SQL> select least(’啊’,’安’,’天’) from dual;LE--啊57.UID返回标识当前用户的唯一整数SQL> show userUSER 为"GAO"SQL> select username,user_id from dba_users where user_id=uid;USERNAME USER_ID------------------------------ ---------GAO 25ER返回当前用户的名字SQL> select user from dual;USER------------------------------GAOEREVN返回当前用户环境的信息,opt可以是:ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE ISDBA 查看当前用户是否是DBA如果是则返回trueSQL> select userenv(’isdba’) from dual;USEREN------FALSESQL> select userenv(’isdba’) from dual; USEREN------TRUESESSION返回会话标志SQL> select userenv(’sessionid’) from dual; USERENV(’SESSIONID’)--------------------152ENTRYID返回会话人口标志SQL> select userenv(’entryid’) from dual; USERENV(’ENTRYID’)------------------INSTANCE返回当前INSTANCE的标志SQL> select userenv(’instance’) from dual; USERENV(’INSTANCE’)-------------------1LANGUAGE返回当前环境变量SQL> select userenv(’language’) from dual; USERENV(’LANGUAGE’)---------------------------------------------------- SIMPLIFIED CHINESE_CHINA.ZHS16GBK LANG返回当前环境的语言的缩写SQL> select userenv(’lang’) from dual; USERENV(’LANG’)----------------------------------------------------ZHSTERMINAL返回用户的终端或机器的标志SQL> select userenv(’terminal’) from dual; USERENV(’TERMINA----------------GAOVSIZE(X)返回X的大小(字节)数SQL> select vsize(user),user from dual; VSIZE(USER) USER----------- ------------------------------6 SYSTEM60.AVG(DISTINCT|ALL)all表示对所有的值求平均值,distinct只对不同的值求平均值SQLWKS> create table table3(xm varchar(8),sal number(7,2));语句已处理。
oracle常用sql函数
oracle常用sql函数Oracle是一款非常优秀的数据库管理系统,它提供了很多强大的功能与工具,其中最基本而实用的功能就是SQL函数了。
下面我们将重点介绍一些常用的Oracle SQL函数,帮助读者更好地了解和掌握这些常用的函数,从而更加有效地处理和管理数据。
一、数值型函数1. ABS()函数:用于计算数值的绝对值,比如ABS(-10)会返回10。
2. CEIL()函数:用于向上取整,比如CEIL(3.14)会返回4。
3. FLOOR()函数:用于向下取整,比如FLOOR(3.14)会返回3。
4. MOD()函数:用于求模,比如MOD(12,5)会返回2。
5. ROUND()函数:用于四舍五入,比如ROUND(3.49)会返回3,而ROUND(3.51)会返回4。
二、字符型函数1. CONCAT()函数:用于连接两个字符串,比如CONCAT('hello','world')会返回helloworld。
2. SUBSTR()函数:用于截取字符串,比如SUBSTR('hello',2,3)会返回ell。
3. UPPER()函数:用于将字符串转换成大写,比如UPPER('hello')会返回HELLO。
4. LOWER()函数:用于将字符串转换成小写,比如LOWER('HELLO')会返回hello。
5. TRIM()函数:用于去掉字符串首尾的空格,比如TRIM(' hello ')会返回hello。
三、日期型函数1. CURRENT_DATE函数:用于获取当前日期,比如SELECT CURRENT_DATE FROM DUAL会返回当前日期。
2. SYSDATE函数:用于获取系统当前时间,比如SELECTSYSDATE FROM DUAL会返回系统当前时间。
3. TO_CHAR()函数:用于将日期转换成字符型,比如TO_CHAR(SYSDATE,'yyyy-mm-dd')会返回当前日期的年月日格式。
oracle常用函数使用大全_最新整理
单值函 数在查询 中返回单 个值,可 被应用到 select, where子 句,start with以及 connect by 子句 和having 子句。 (一).数值 型函数 (Number Functions ) 数值型函 数输入数 字型参数 并返回数 值型的值 。多数该 类函数的 返回值支 持38位小 数点,诸 如:COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH 支 持36位小 数点。 ACOS, ASIN, ATAN, and ATAN2支 持30位小
n1<0,则 oracle从 右向左数 确认起始 位置 例如: SELECT SUBSTR( 'What is this',-5,3) FROM DUAL;
n1>c1.len gth则返 回空 例如: SELECT SUBSTR( 'What is this',50,3) FROM DUAL; 然后再请 你猜猜, 如果 n2<1,会 如何返回 值呢
3、 TRUNC(n 1[,n2] 返 回截尾到 n2位小数 的n1的 值,n2缺 省设置为 0,当n2为 缺省设置 时会将n1 截尾为整 数,如果 n2为负 值,就截 尾在小数 点左边相 应的位上 。 例如: SELECT TRUNC(2 3.56),TRU NC(23.56, 1),TRUNC (23.56,-1) FROM DUAL;
例如: SELECT REPLAC E('WWhhh hhaT is tHis w W','W','-') FROM
9、 SOUNDE X(c) 神奇 的函数 啊,该函 数返回字 符串参数 的语音表 示形式, 对于比较 一些读音 相同,但 是拼写不 同的单词 非常有用 。计算语 音的算法 如下:
oracle统计个数的函数
oracle统计个数的函数Oracle是一种强大的数据库管理系统,它提供了许多函数来处理和分析数据。
其中之一就是用于统计个数的函数。
在本文中,我将为您介绍一些常用的Oracle统计个数的函数,并提供相应的示例。
1. COUNT函数COUNT函数用于统计满足指定条件的行数。
它可以作用于单个列、多个列或整个表。
以下是COUNT函数的语法:```SELECT COUNT(column_name) FROM table_name WHERE condition;```其中,column_name是要进行统计的列名,table_name是要进行统计的表名,condition是筛选条件(可选)。
示例1:我们有一个名为"students"的表,其中包含了学生的信息。
现在,我们想统计表中所有学生的个数。
可以使用以下SQL语句:```SELECT COUNT(*) FROM students;```这将返回表中所有学生的个数。
示例2:假设我们只想统计表中英语成绩超过60分的学生个数,可以使用以下SQL语句:```SELECT COUNT(*) FROM students WHERE English > 60;```这将返回英语成绩超过60分的学生个数。
2. SUM函数SUM函数用于计算指定列的数值总和。
它常用于对数值进行求和操作。
以下是SUM函数的语法:```SELECT SUM(column_name) FROM table_name WHERE condition;```其中,column_name是要进行求和的列名,table_name是要进行求和的表名,condition是筛选条件(可选)。
示例3:假设我们有一个名为"sales"的表,其中包含了销售数据。
现在,我们想计算表中所有销售额的总和。
可以使用以下SQL语句:```SELECT SUM(sales_amount) FROM sales;```这将返回表中所有销售额的总和。
