求123456求和公式中,所有四位数的数字之和


系统函数中的单行函数
1.数值函数
(1)ABS(参数) 绝对值函数 参数为数字或数字表达式,结果恒为正
例题:SELECT ABS(123),ABS(-123) FROM DUAL
结果为:123 123
功能:返回参数数值/数字表达式的绝对值,
(2)ROUND(参数|列,N) 四舍五入函数
功能:返回参数或列数据的近似值,结果四舍五入到小数点右/左侧的N位
说明:1.当N为正数时,代表对小数点后第N位进行四舍五入;
2. 当N为负数时,代表对小数点前第-N位进行四舍五入,-N是正数
3. 如果括号里只有参数,即假定此时的N为0,表示对此参数四舍五入到个位。
例题:SELECT ROUND(1.23456,2),ROUND(1.23456,3),ROUND(1234.56,-2),ROUND(-123456.78,-2) FROM DUAL
结果为:1.23 1.235 1200 -123500
(3)CEIL(参数) 向上取整函数
功能:返回大于或者等于参数值的最小的整数
说明:参数即使为负数时也满足此逻辑思维
例题:SELECT CEIL(123.567),CEIL(-123.456) FROM DUAL
结果为:124 123
(4)FLOOR(参数) 向下取整函数
功能:返回小于或等于参数值的最大的整数
说明:参数即使为负数时也满足此逻辑思维
例题:SELECT FLOOR(123.567),FLOOR(-123.456) FROM DUAL
结果为:123 -124
(5)COS(参数) 取余弦函数
功能:返回参数数值的余弦值
说明:取余弦函数来源于数学求三角函数,所以结果都为整数
例题:SELECT COS(56),COS(-56),COS(0) FROM DUAL
结果为:
(6)MOD(参数1,参数2) 取余函数
功能:返回两个数相除的余数。
说明:1.参数1为被除数,参数2为除数。当参数2时0时,则返回被除数
2.常被用于判断奇偶数,符合逻辑思维
例题:SELECT MOD(7,4),MOD(7,-4),MOD(-7,4),MOD(-7,-4),MOD(7,0) FROM DUAL
结果为:3 3 -3 -3 7
(7)POWER(参数,N)
功能:返回参数值的N次方
例题:SELECT POWER(3,4) FROM DUAL
结果:81
(8)SIGN(参数)
功能:确定参数值的正负性
说明:若参数值为整数,则返回1;若参数值为负数,则返回-1;若参数值为0,则返回0
例题:SELECT SIGN(-7),SIGN(0),SIGN(7) FROM DUAL
结果为:-1 0 1
(9)SQRT(参数)
功能:返回参数值的平方根
说明:参数值为不为负数
例题:SELECT SQRT(0),SQRT(9) FROM DUAL
结果:0 3
(10)TRUNC(参数,N) 截断函数
功能:返回舍弃小数点指定位置之后内容的数据
说明:1.当N为正数时,就截断到小数点右侧的N位处
当N为负数时,就截断到小数点左侧的-N位处
如果括号里只有参数时,就假定为0,只截取整数,而舍弃小数
例题:SELECT TRUNC(1234.56789,3),TRUNC(1234.56789,-3),TRUNC(1234.56789),
TRUNC(-1234.56789,3),TRUNC(-1234.56789,-3) FROM DUAL
结果为:1234.567 1000 1234 -1234.567 -1000
2.字符串函数: 写字符串的时候要加上单引号
对单个字符串进行操作
(1)LENGTH(字符串) 功能:返回字符串的长度
LENGTHB(字符串) 功能:返回字符串字节的长度
备注:1.英文的符号和字母占1个字节,中文的符号和汉字 都占2个字节,
2.所占字节取决于计算机所使用过得字符集 UTF-32所有的都是4个字节
注意;要输出英文单引号时需要用单引号转义,输出中文单引号时不需要单引号来转义
例题:SELECT LENGTH('ABC'),LENGTH('123'),LENGTH('我爱狗狗'),LENGTHB('ABC'),LENGTHB('123'),
LENGTHB('我爱狗狗') FROM DUAL
(2)LOWER(字符串)
功能:将字符串中的字符转换成小写
例题:SELECT LOWER('HEllo,LloveDog') FROM DUAL
结果:hello,llovedpg
(3)UPPER(字符串)
功能:将字符串中的字符转换成大写
例题:SELECT UPPER('HEllo,LloveDog') FROM DUAL
结果:HELLO,LLOVEDOG
(4)INITCAP(字符串)
功能:将字符串中每个单词的首字母转化成大写,单词中其他字母转换成小写
说明:*单词的划分:以空格、标点符号、特殊符号等非字母和数字的符号限制,看成分隔符,但是数字不算
例题:SELECT INITCAP('HeLLO,l lOVe_doG!')
结果:Hell,L Love_Dog!
连接两个字符串函数
(5) CONCAT(字符串1,字符串2)
功能:将字符串1和字符串2连接起来,类似
说明:只能连接两个字符串,如果要连接多个时,需要用到函数的嵌套
例题:SELECT CONCAT(CONCAT(CONCAT('ABC','123'),'+-*/'),'CDE'),'ABC'
'123'
'+-*/'
'CDE' FROM DUAL
结果:ABC123+-*/CDE ABC123+-*/CDE
去空格字符串函数
(6) TRIM(字符串) 去除字符串两端的空格
LTRIM(字符串) 去除字符串左侧的空格
RTRIM(字符串) 去除字符串右边的空格
备注:LTRIM,RTRIM 只能去除两边的空格,不能去除中间的空格
例题:SELECT TRIM(' 我 爱 D O G '),LTRIM(' 我 爱 D O G '),RTRIM(' 我 爱 D O G ') FROM DUAL
结果:我 爱 D O G 我 爱 D O G___ ___我 爱 D O G
填充字符串函数
(7) LPAD(字符串1,N,填充的字符串2) 左填充 在字符串1的左侧进行填充字符串2,填充之后的字符串总长度为N
RPAD(字符串1,N,填充的字符串2) 右填充 在字符串1的右侧进行填充字符串2,填充之后的字符串总长度为N
说明:1.若没有指出填充字符串2的具体字符,即括号里只有字符串1和N,则用空格进行填充
2.N的值必须大于字符串1的长度
3.当字符串1的长度大于等于|N|的时,和截取SUBSTR相同
例题:SELECT LPAD('HELLO',7,'*'),RPAD('HELLO',7,'*'),LPAD('HELLO',3,'*'),RPAD('HELLO',3,'*'),LPAD('HELLO',3) FROM DUAL
结果:**HELLO HELLO** HEL HEL HEL
***查找字符串函数-----注意返回值是位置
(8) 1.INSTR(字符串1,字符串2)
功能:在字符串1中查询字符串2第一次出现的位置,返回值是第几位
例题:SELECT INSTR('ABCGEFGCGRE','C'),INSTR('ABCDEFGCGRE','CG')FROM DUAL
结果:3 8
2.INSTR(字符串1,字符串2,1或-1)
功能: 当为1时,表示字符串2第一次出现的位置,和上述相同
当为-1时,表示字符串倒数第一次出现的位置
(其他数值还没有验证)
例题:SELECT INSTR('ABCGEFGCGRE','CG',1),INSTR('ABCGEFGCGRE','CG',-2)FROM DUAL
结果:8 3
***3.INSTR(字符串1,字符串2,M,N)
功能:从字符串1中第M的位置开始查找字符串2第N次出现的位置,返回值为字符串第N次出现的位置
备注:M的正负决定着查找的顺序方向
1.当M>0,N>0时,从字符串1中第M的位置开始向后查找字符串2第N次出现的位置
2.当M=0时,结果为0
3.当M<0时,N>0时,表示从后面-M的位置往前找第N次出现的位置。
4.N必须大于0
例题:查找HELLOWORLD,从倒数第二位开始查找,找出第二个L出现的位置
SELECT INSTR('HELLOWORLD','L',-2,2) FROM DUAL
结果:4
***截取字符串函数
(9) 1.SUBSTR(字符串,M,N)
功能:从字符串的M位置向后截取长度为N的字符串
说明:1.这个字符串可以是数字、字母和汉字
2.当M为1或者0时,都表示从第一位开始向后截取
当M为负数时,代表从后面往前数的第-M位开始向后截取,若|M
3.当N的值大于所需截取的字符串长度时,返回所需截取后的字符串的所有字符
例题:select substr('abcde',2,7) from dual; 结果为bcde
4.当N为0的时候不返回任何字符串, 当只有字符串和M时而没有N时,返回从第M个字符以后的所有字符串;
例题:SELECT SUBSTR('ABCDEF',4,2),SUBSTR('ABCDEF',4,0),SUBSTR('ABCDEF',4)FROM DUAL
结果:DE (空) DEF
2.SUBSTR(字符串,M) 从默认位置向后截取到最后一位
备注:当M为负数时,代表从后往前查找到到第-M位,然后再向后截取到最后一位
例题:SELECT SUBSTR('HELLOWORLD',-2),SUBSTR('HELLOWORLD',3,4) FROM DUAL
结果为:LD LLOW
***替换字符串函数
(10) REPLACE(源字符串,目标字符串,代替字符串)
功能:将源字符串中的目标字符串替换成代替字符串,即用代替字符串整体替换源字符串中的目标字符串
说明:1.REPLACE 是将目标字符串整体替换成代替字符串
2.若源字符串中不含有目标字符串,则不进行任何替换
**3.若代替字符串为''或者为NULL时,源字符串中目标字符串完全被剪切掉
4.注意:空格也是个字符
例题:SELECT REPLACE('ABCDEFEF','ABC','abc'),REPLACE('ABCDEFEF','ABCE','123'),REPLACE('ABCDEFEF','CDE','')FROM DUAL
结果:abcDEFEF ABCDEFEF ABFEF
替换字符串函数,也成为翻译字符函数
(11) TRANSLATE(字符串1,字符串2,字符串3)
功能:将字符串1中的有关字符串2的字符一一对应转换成字符串3中对应的字符,然后返回
即用字符串3中的每个字符一一对应的替换字符串1中字符串2中的每个字符
说明:1.字符串2和字符串3中的字符是一一对应
2.***如果字符串2的长度大于字符串3,这样字符串2中出现多余的字符,
那么除了将字符串1中由有关字符串2的字符一一对应转换成字符串3中对应的字符外,字符串1还会将会把这些多余的字符一一对应去除掉
例题:SELECT TRANSLATE(74589.034,1234567890.,'一二三四五六七八九零点'),TRANSLATE('ABCDECCCCFGA','ABC','WO')FROM DUAL
结果:七四五八九.零三四 WODEFGW
备注:1. 当字符串1,字符串2,字符串3中出现空值null时,返回的结果为空值NULL
2.若要将字符串1中的某个字符替换为空字符时,需要在字符串2中对应的’某个字符‘前拼接一个字符串1中不存在的字符
3.日期函数
系统当前日期:SYSDATE
日期格式:年 YYYY,YYY,YYY
月 MM,MON(字符集)
日 DD,DAY(字符集决定的,指的是星期几)
时 HH24,HH
分 MI
秒 SS
日期值为Oracle的日期格式:15-8月-2018,系统会自动转换为PL/SQL格式
(1)天数、时、分、秒的计算
日期运算规律: 日期 +/- 天数 = 日期 表示若干天后或者若干天前的
日期 - 日期 = 天数 表示两个日期间的天数
加小时: 日期值+1/24
加分钟: 日期值+1/24/60
加秒数: 日期值+1/24/60/60
例题:查询三天后的日期,7天前的日期,1小时后的时间,5分钟后的时间,1.5天后的时间
SELECT SYSDATE+3, SYSDATE-7, SYSDATE+1/24, SYSDATE+5*1/24/60, SYSDATE+1.5 FROM DUAL
例题:写出将时间“2018-10-26”显示成“2018-10-29 12:13:14”
SELECT DATE('2018-10-26')+3+12/24+13/24/60+14/24/60/60 FROM DUAL;
(2)LAST_DAY(日期值)
功能:返回日期值所在月份的最后一天,结果为日期
(3)NEXT_DAY(日期值,'星期几') 其中DAY指的是星期几
功能:返回指定日期值之后的第一个星期几的所对应的日期;
说明:***1.日期值的当前日期不参与计算
2.星期几可以是以下两种形式(一一对应)
(1)星期日、星期一、星期二、星期三、星期四、星期五、星期六
(2) 1、 2 、 3 、 4 、 5 、 6 、 7
3.注意:解题时,日期值和星期几前后的问题!
例题:确定下一个周六的日期
SELECT NEXT_DAY(SYSDATE,'星期六'),NEXT_DAY(SYSDATE,'7') FROM DUAL
**月份和年份的计算
(4)ADD_MONTHS(日期值,N) 用来加减月份
功能:返回日期值加上指定月数N个月之后的所对应的日期
说明:1.N为正数时,表示日期值之后第N个月时的日期
N为负数时,代表日期值之前第-N个月时的日期
2.如果加/减年的话,用12的倍数来计算;
3.当N为小数时,默认向下取整
例题:计算三个月前到今天的天数
SELECT SYSDATE-ADD_MONTHS(SYSDATE,-3) FROM DUAL
相差月份数和年份数的计算
(5)MONTHS_BETWEEN(日期值1,日期值2)
功能:返回日期1减去日期2所得的月份,结果为数值
说明:1.注意日期值的位置
若日期值1>日志值2,结果为整数
若日期值1<日志值2,结果为负数
2.如果整体除以12的话,可以计算相差几年
例题:计算员工入职几个月
SELECT MONTHS_BETWEEN(SYSDATE,HIREDATE) FROM EMP
**(6)TRUNC(日期值,'部分时段')
功能:对日期值指定时段的截断,精确到日期值中部分时段所在的最小值
说明: 部分时段 --- 最小时间
'YYYY' 年 --- 返回日期所在年份第一天的日期 ,某年1月1日
'MM' 月 --- 返回日期所在月份第一天的日期,某年某月1日
'DD' 日 --- 返回日期值当天所在的日期,某年某月某日
'HH24' 时 --- 精确到日期值的整时,某年某月某日某时0分0秒
'MI' 分 --- 精确到日期值的整分,某年某月某日某时某分0秒
'SS' 秒 --- 没有精确到秒的时间
例题:SELECT TRUNC(SYSTEM,'YYYY'),TRUNC(SYSTEM,'MM'),TRUNC(SYSTEM,'DD'),TRUNC(SYSTEM,'HH24'),TRUNC(SYSTEM,'MI') FROM DUAL;
SELECT TRUNC(SYSTEM,'SS') FROM DUAL;
-------------日期中常见的关于日期的四种运算方式---------------------------
1.给指定日期加减年、月、日
date可以直接加减数字表示加减多少天
加减月份,必须用函数add_months
加减年,必须用函数add_months,参数2乘以12
2.给指定日期加减时、分、秒
1小时 1/24
1分钟 1/24/60
1秒 1/24/60/60
3.求日期间隔之时、分、秒
日期相减得天数
小时:天数*24
分钟: 天数*24*60
秒: 天数*24*60*60
4.日期间隔之年、月、日
日期相减得相差天数
相差月份必须用months_between
相差的年:months_between的月数除以12
*****经典例题:判断员工编号7788的入职年份是不是闰年
思路一:公历闰年的简单计算方法(符合以下条件之一的年份即为闰年,反之则是平年)
1.能被4整除而不能被100整除。
2.能被100整除也能被400整除。
思路二:判断二月最后一天是哪一天
思路三:判断一年有多少天 --365平年 366闰年
*****4.转换函数
ASCII 码表
(1)ASCII(字符) 返回字符在ASCII表中对应的数值。
CHR(数值) 返回数值在ASCII表总对应的字符
备注:1.ASCII当中只能是一个字符,当为字符串时,返回的结果只能是第一个字符的所对应的数值。
2.大写字母与相对应的小写字母之间相差值为32
例题:SELECT ASCII('%'),ASCII('A'),ASCII('a') FROM DUAL
SELECT CHR(11),CHR(22),CHR(33),CHR(44),CHR(55) FROM DUAL
---如何查询开头带有单引号的字符
法一:单引号转义单引号 SELECT * FROM ZIFU WHERE NAME LIKE '''%';
法二:利用chr函数 SELECT * FROM ZIFU WHERE NAME LIKE CHR(39)
'%' ;
法三:利用q'{ }' SELECT * FROM ZIFU WHERE NAME LIKE Q'{'}'
'%' ;
字符串转换为数字
(2)TO_NUMBER(纯数字字符串)
功能:将字符串转换为数字,只有纯数字字符才可以转换
***(3)TO_DATE 将字符串转换为日期
1.DATE' ' 格式为'数字-数字-数字'
将数字转换为日期
2.TO_DATE(字符串,'日期格式')
日期格式:YYYYMMDD、YYYY/MM/DD、YYYY-MM-DD
数字或字符串转化日期
1.字符串有格式,后面必须有格式,前面与后面的分隔符可以不一样
2.字符串没有格式,后面有没有格式都行
**3.前面与后面对应的数值对应的位置要一致
例题:SELECT TO_DATE('2018-08-15','YYYY/MM/DD'),TO_DATE('20180815','YYYY-MM-DD'),TO_DATE('08152018','MM-DD-YYYY') FROM DUAL
****(4)TO_CHAR(日期值|数字,'格式字符串') 将数字或者日期转换为字符串
1.将日期转换为字符串
用法1:to_char(日期) 结果为字符串
用法2:to_char(日期,'格式')
(1)可以自己定义格式:YYYYMMDD、YYYY/MM/DD、YYYY-MM-DD
*如果想要在显示的字符串前不显示‘0’的话,可以在各式字符前加fm,如:'FMYYYYMMDD'
(3)TO_CHAR() 与TRUNC()之间的区别
-----------------------------------------------------------------------------------------------------------------------
1..日期格式:to_char(日期,'日期格式') 解读 trunc(日期,'部分时段')
某年 yyyy,yyy,yy 某年1月1日,日期所在年份第一天的日期
某月 mm ,mon(字符集) 某年某月1日,日期所在月份第一天的日期
某日 dd 某年某月某日,日期值当天所在的日期,某年某月某日
某时 hh24 hh12 某年某月某日某时0分0秒,精确到日期值的整时,
某分 mi 某年某月某日某时某分0 秒,精确到日期值的整分,
某秒 ss 无
日期值所在当年的第几天 ddd 某年某月某日,期值当天所在的日期,
日期值所在的第几季度 q 日期所在季度的第一天,
日期当年第几周 ww,iw 日期所在周第一天
日期当月第几周 w ?
******特殊格式:TO_CHAR(日期,'DAY') 显示日期所对应的是星期几
备注:--iw与ww的区别,都取第几周,但是参数的初始值不同,
ww每年的1月1日作为当年的第一周的第一天(不管当年的1月1日是星期几),
iw星期一至星期日算一周,且每年的第一个星期一看做第一周
----------------------------------------------------------------------------------------------------------------------
综合例题1:select to_char(sysdate,'ddd'),to_char(sysdate,'q'),to_char(sysdate,'ww'), to_char(sysdate,'iw'), to_char(sysdate,'w') from dual
结果:227 、 3 、 33 、33 、 3
综合例题2:select trunc(sysdate,'iw'), trunc(sysdate,'ww') from dual
综合例题3:显示现在的时间,精确到时间秒
SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') FROM DUAL
2.将数值转换为字符串 --
用法1:TO_CHAR(数值) 就是将数值转换为字符串
用法2:控制数字显示格式
to_char(数值,'格式空值')
****9代表占位符,
如果位数大于前面的位数,前面的位数将会全部显现出来
如果位数小于前面的数字,会显示#
select TO_CHAR(123456,'999,999') FROM DUAL
SELECT TO_CHAR(1234567,'999,999') #######
SELECT TO_CHAR(1234567,'$999,999') 美元符号
SELECT TO_CHAR(1234567,'L999,999') 当地货币符号 --(local)
5.通用函数
(1)GREATEST(参数1,参数2,参数3,...)
功能:返回几个参数中的最大值
说明:括号里面列的类型必须一致,或者可以进行隐式转换
如果参数中有NULL,则结果为空值NULL
(2)LEAST(参数1,参数2,参数3,...)
功能:返回几个参数中的最小值
说明:括号里面列的类型必须一致,或者进行隐式转换
如果参数中有NULL,则结果为空值NULL
(3)NULLIF(参数1,参数2)
功能:当参数1等于参数2时,返回NULL;参数1不等于参数2时,返回参数1
说明:1.参数1和参数2的数据类型相同,或者可以隐式转换
数据类型可以是:常量、列名、函数、子查询等任意组合
2.NULL可以放在参数2的位置,但是不能放在参数1的位置
(4)COALESCE(参数1,参数2,参数3,...)
功能说明:返回几个参数中第一个不为空值的参数值
****(5)处理空值 因为空值与数字的计算是空值
1.NVL(参数,自定义值)
一般情况下,参数与空值之间的运算均为空值,此函数的目的就是将空值转换为0
如果参数中有空值,则返回自定义值,如果参数中有值,则返回参数中的值
注意:参数与自定义值的类型一致
2.NVL2(参数1,参数2,参数3)
当参数1为空值时,返回参数3,当参数1不为空值时,返回参数2
说明:参数1、参数2、参数3的数据类型必须一致
查询员工月工资--------------------------------------------------------------------------------------------------------------------
nvl2(comm,sal,comm+sal)
(6)匹配函数 类似于程序中的if else语句
*******1.DECODE(参数,值1,返回值1,值2,返回值2,值3,返回值3,...,默认值) ---值匹配
功能: 当参数等于值1时,返回返回值1;
当参数等于值2时,返回返回值3;
当参数等于值3时,返回返回值3;
....
如果没有相等的值的话,则返回默认值;
说明: 1.DECODE函数用语一般用于判断数值
1.如果没有默认值的话,则返回空值;
2.参数的值不能为逻辑表达式或者逻辑值
例题:确定员工入职日期是否是闰年
SELECT DECODE(LAST_DAY(ADD_MONTHS( TRUNC(HIREDATE,'YYYY'),+1)) - ADD_MONTHS( TRUNC(HIREDATE,'YYYY'),+1),
28,'闰年','平年' )FROM EMP
2. CASE... WHEN... end
格式一 CASE 参数|表达式 ------值匹配
WHEN 值1 THEN 返回值1
WHEN 值2 THEN 返回值2
WHEN 值3 THEN 返回值3
WHEN 值4 THEN 返回值4
....
{ELSE 默认值}
END
备注:1.CASE WHEN END 函数可以出现的位置:SELECT 之后,WHERE 之后
2.如果没有表达式的值,则返回空值
**3.参数的值可以为逻辑表达式或者逻辑值
例题:SELECT EMPNO,ENAME,JOB,CASE JOB WHEN 'CLERK' THEN '职员'
WHEN 'MANAGER' THEN '经理'WHEN 'PRESIDENT' THEN '总管'ELSE '分析员'END
FROM EMP
格式二 CASE WHEN 表达式1 THEN 返回值1
WHEN 表达式2 THEN 返回值2
WHEN 表达式3 THEN 返回值3
...
{ELSE 默认值}
END
备注:1.如果没有表达式的值,则返回空值
2.如果表达式1,表达式2...是范围时,要注意先写小范围的,再写大范围的,这是程序执行的顺序决定的
3.参数的值可以为逻辑表达式或者逻辑值
例题:SELECT ENAME,SAL,CASE WHEN SAL<1000 THEN '小于1000'
WHEN (SAL>=1000 AND SAL<2000) THEN '大于1000'
WHEN (SAL>=2000 AND SAL<3000) THEN '大于2000'
WHEN (SAL>=3000 AND SAL<4000) THEN '大于3000'
ELSE '大于4000'
END
FROM EMP

我要回帖

更多关于 123456求和公式 的文章

 

随机推荐