Oracle数据库 单值函数

tech2024-11-29  13

函数分为:       一.单值函数             1.字符函数             2.数字函数             3.日期函数             4.转换函数       二.分组函数(后面的章节再做学习)

      dual  //哑表       dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。       1)字符函数       LOWER    Converts to lowercase       UPPER    Converts to uppercase       INITCAP    Converts to initial capitalization       CONCAT    Concatenates values       SUBSTR    Returns substring       LENGTH    Returns number of characters       NVL        Converts a null value          •   lower 把字符转为小写               例如:把'HELLO'转换为小写               select lower('HELLO')               from dual;                  • upper 把字符转换为大写               例如:把'world'转换为大写               select upper('world')               from dual;

    • initcap 把字符串首字母转换为大写               例如:把'hELLO'转换为首字母大写,其余字母小写               select initcap('hELLO')               from dual;                  • concat 把俩个字符串连接在一起(类似之前的||的作用)               例如:把'hello'和'world'俩个字符串连接到一起,并且起个别名为msg               select concat('hello','world') msg                        from dual;          •  substr 截取字符串               例如:截取'hello'字符串,从第2个字符开始(包含第二个字符),截取后面连续的3个字符               select substr('hello',2,3)               from dual;               •  length 获得字符串长度               例如:获得'world'字符串的长度               select length('world')               from dual;          •  nvl 替换列中为null的值               select last_name,nvl(commission_pct,0)               from s_emp;      2)数字函数         ROUND    Rounds value to specified decimal         TRUNC    Truncates value to specified decimal         MOD        Returns remainder of division             •     round 四舍五入               round(arg1,arg2)               第一个参数表示要进行四舍五入操作的数字               第二个参数表示保留到哪一位                    例如:               保留到小数点后面2位               select round(45.923,2)               from dual;                  •       trunc 截取到某一位                trunc(arg1,arg2)               和round的用法一样,但是trunc只舍去不进位                    例如:               截取到小数点后面2位               select trunc(45.929,2)               from dual;                               •         mod 取余              mod(arg1,arg2)                  第一个参数表示要进行取余操作的数字              第二个参数表示参数1和谁取余                                例如:                 把10和3进行取余 (10除以3然后获取余数)                 select mod(10,3)                 from dual;                  3)日期函数           MONTHS_BETWEEN    Number of months between two dates           ADD_MONTHS              Add calendar months to date           NEXT_DAY                    Next day of the date specified           LAST_DAY                     Last day of the month           ROUND                          Round to date at midnight           TRUNC                           Remove time portion  from date                sysdate关键字             表示系统的当前时间                 例如:             显示时间:当前时间             select sysdate from dual;             注意:sysdate进行加减操作的时候,单位是天             例如:                     显示时间:明天的这个时候                     select sysdate+1 from dual;                          • months_between 俩个日期之间相差多少个月(单位是月)             例如:             30天之后和现在相差多少个月             select months_between(sysdate+30,sysdate)             from dual;               • add_months  返回一个日期数据:表示一个时间点,往后推x月的日期             例如:             '01-2月-2016'往后推2个月             select add_months('01-2月-2016',2)             from dual;                 注意:这个数字也可以是负数,表示往前推x月          • next_day 返回一个日期数据:表示一个时间点后的下一个星期几在哪一天             例如:             离当前时间最近的下一个星期5是哪一个天             select next_day(sysdate,'星期五')             from dual;             注意:             如果要使用'FRIDAY',那么需要把当前会话的语言环境修改为英文               • last_day 返回一个日期数据:表示一个日期所在月份的最后一天             例如:             当前日期所在月份的最后一天(月底)             select last_day(sysdate)             from dual;               • round  对日期进四舍五入,返回操作后的日期数据             例如:             把当前日期四舍五入到月             select round(sysdate,'MONTH')             from dual;             测试:15号16号分别是舍弃还是进位             (15号是舍弃,16号是进位)             //这个写法是错误的             //数字函数也有一个round             //俩个ronnd函数有冲突             //所以这里不能使用默认的日期格式             select round('01-2月-2016','MONTH')             from dual;          •  trunc  对日期进行截取 和round类似,但是只舍弃不进位

4)类型转换函数     TO_CHAR      converts a number or date string to a character string.     TO_NUMBER converts a character string containing digits to a number.     TO_DATE       converts a character string of a date to a date value.                •  to_char 把日期转换为字符             例如:             把当前日期按照指定格式转换为字符串             select to_char(sysdate,'yyyy')             from dual;                            日期格式:               yyyy:四位数的年份               rrrr:四位数的年份               yy:两位数的年份               rr:两位数的年份               mm:两位数的月份(数字)               D:一周的星期几               DD:一月的第几天               DDD :一年的第几天               YEAR:英文的年份               MONTH:英文全称的月份               mon:英文简写的月份               ddsp:英文的第几天(一个月的)               ddspth:英文序列数的第几天(一个月的)               DAY:全英文的星期               DY:简写的英文星期               hh:小时               mi:分钟               ss:秒                  •     to_number 把字符转换为数字             例如:             select to_number('1000')              from dual;                          //这个写法是错的 abc不能转换为数字             select to_number('abc')             from dual;     •      to_date 把字符转换为日期             例如:             select to_date('10-12-2016','dd-mm-yyyy')             from dual;

    oracle数据库中表示一个日期数据的几种方式       1.使用sysdate       2.使用oracle默认的日期格式 例如:'25-MAY-95'       3.使用日期函数ADD_MONTHS/NEXT_DAY/LAST_DAY/ROUND/TRUNC       4.使用转换函数to_date

    函数之间的嵌套       格式:F3(F2(F1(arg0,arg1),arg2),arg3)       例如:       先把'hello'和'world'连接起来,再转换为字母大写然后再从第4个字符开始,连着截取4个字符       select substr(upper(concat('hello','world')),4,4)       from dual;  

最新回复(0)