单行函数

本文详细介绍了SQL中的多种常用函数,包括大小写控制函数、字符控制函数、数字函数、日期函数等,并提供了丰富的示例帮助理解如何使用这些函数进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


大小写控制函数


--LOWER/UPPER/INITCAP

            --例1:将查到的列的字符串全部转换成小写输出

                SELECTLOWER(last_name)

                FROM employees;

            --例2:将将查到的列的字符串全部转换成大写输出

                SELECT UPPER(last_name)

                FROM employees;

            --例3:将每个字符串的首字母变为大写

                SELECT INITCAP('last_name HELLOdog')

                FROM dual;


字符控制函数


--CONCAT/LPAD/RPAD

            --例1:链接字符串

                SELECT first_name ||''|| last_name AS fullname

                FROM employees;

                -------------------------------------------

                SELECT CONCAT(first_name,CONCAT('',last_name)) AS fullname

                FROMemployees;

               

            --例2:在检索到的结果前循环加上第三个参数所表示字符串

                --第二个参数为输出字符串长度,若参数1得长度大于限制从右边舍去

                SELECT LPAD(employee_id,8,'123')

                FROMemployees;

                -------------------------------

                --在检索到的结果后循环加上第三个参数所表示字符串

                --第二个参数为输出字符串长度,若参数1得长度大于限制从右边舍去

                SELECT RPAD(employee_id,2,'123')

                FROM employees;

      

        --SUBSTR

            --1:(使用2个参数)从第二个参数所表示的值开始截取字符串

                SELECT SUBSTR('ABC D1234 234 NARS na',4)

                FROM dual;

                SELECT SUBSTR(last_name,4),last_name

                FROM employees;

               

        --INSTR

            --例1:查找第二参数的首字母在第一个参数中的位置

            --若不匹配,则返回0

            SELECT INSTR('SQL allowsfor dynamic DB changes','all')

            FROM dual;

            --指定起始位置(只返回按要求第一次出现位置)

            SELECT INSTR('SQL allowsfor dynamic DB changes','a',6)

            FROM dual;

            --指定起始位置并指明第几次出现

            SELECT INSTR('SQL allowsfor dynamic DB changes','a',6,2)

            FROM dual;

           

        --5)TRIM

            --例1:去掉字符串两端空格

                SELECT TRIM('   VFBAPSTAK   ')

                FROM dual;

               

            --例2:去掉字符串前端指定的字符

                SELECT TRIM(LEADING'A'FROM'AAABA  VFBAPSTAK   ')

                FROM dual;

               

            --例3:去掉字符串末端指定的字符

                SELECTTRIM(TRAILING'A'FROM'AAABA VFBAPSTAK    ABAA')

                FROM dual;

               

            --例4:去掉字符串两端指定的字符

                SELECTTRIM('A'FROM'AAABA  VFBAPSTAK    ABAA')

                FROM dual;

               

        --6)REPLACE

            --例1:用第三个参数替换第二个参数

                SELECTREPLACE('SQL*PLUS supports loops or if statements.',

                    'supports',

                    'does notsupport')

                    FROM dual;

                   

        --7)LENGTH

            --例1:统计参数字符串长度

                    SELECTLENGTH('SQL lets you  supports loops orif statements.'

                    )

                    FROM dual;


数字函数


    --1)ROUND/TRUNC

        --例1:保留参数2所表示的有效位小数,TRUNC不四舍五入

        SELECTROUND(168.888,2),TRUNC(168.888,2)

        FROM dual;

        ------------------------

        SELECTROUND(168.888,0),TRUNC(168.888,0)

        FROM dual;

        -----------------

        --无参数取整

        SELECTROUND(168.888),TRUNC(168.888)

        FROM dual;

        ---------

        --从个位开始取0运算

        SELECTROUND(168.888,-2),TRUNC(168.888,-2)

        FROM dual;

   

    --2)MOD

        --例:求余运算

            SELECT MOD(9,4)

            FROM dual;

           

    --3)CEIL/FLOOR

        --例:向上向下取整

            SELECTCEIL(34.5),FLOOR(34.5)

            FROM dual;


日期函数


--  1)SYSDATE

        --例:查询当前系统时间

            SELECT SYSDATE

            FROM dual;

            --Oracle默认日期格式:DD-MON-YY

           

        --例2:7天后的日期

            SELECT SYSDATE + 7

            FROM dual;

           

        --例3:100小时之后的时间

            SELECT SYSDATE + 100/24

            FROM dual;

           

    --2)MONTHS_BETWEEN

        --例1:计算两个日期之间相隔几个月

            SELECTMONTHS_BETWEEN('01-12月-2010','31-1月-2010')

            FROM dual;

           

    --3)ADD_MONTHS

        --例:在指定日期后加上参数二指定的月份

            SELECTADD_MONTHS(SYSDATE,3)

            FROM dual;

           

    --4)NEXT_DAY

        --例:当前日期之后的星期一

            SELECT NEXT_DAY(SYSDATE,'星期一')

            FROM dual;

            --系统时间为中文

            SELECTNEXT_DAY(SYSDATE,'MONDAY')

            FROM dual;

            -------------------------

            SELECTNEXT_DAY(SYSDATE,'MON')

            FROM dual;

            --系统时间为英文

            SELECTNEXT_DAY(SYSDATE,'1')

            FROM dual;

            --使用数字,1代表周日

       

    --5)LAST_DAY

        --例:返回当前月份的最后一天

            SELECT LAST_DAY(SYSDATE)

            FROM dual;



字符串。数字和日期之间的转换函数





    --准备:

        --Oracle日期类型DATE数据的内部存储格式:世纪、年。月。日。时。分。秒

        --日期的缺省输入和输出的格式:DD-MON-RR

        --1)TO_CHAR

            --例1:以默认日期格式输出:DD-MON-RR

            SELECTfirst_name,last_name,TO_CHAR(hire_date)

            FROM employees;

            --例2:

                SELECT first_name,last_name,

                    TO_CHAR(hire_date,'YYYY-MM-DDDY HH24:MI:SS')

                    FROM employees;

                    --第一个参数必须是日期类型,不能是以字符串形式表示的日期直接量

                    --格式描述:

                        --年:YYYY、YY、RR

                        --月:MM、MON、MONTH

                        --日:DD

                        --星期:DY、DAY

                        --小时:HH24、HH

                        --分:MI

                        --秒:SS

                       

            --例3:借助TO_CHAR函数获取日期中存储的特殊值

                SELECTTO_CHAR(SYSDATE,'DY')

                FROM dual;

            --例4:(数值格式化)

                SELECTfirst_name,last_name,TO_CHAR(salary*1.6,'$999,999.99')

                FROM employees;

                --格式描述

                /*

                9:一位数字

                0:一位数字,但会保留前导0

                $:显示美元符号

                L:显示本地货币符号

                .:显示小数点

                ,:显示千分位

                */

        --2)TO_DATE

            --例1:使用缺省格式化描述

                SELECT TO_DATE('03-9月-1975')

                FROM dual;

                --尽管默认格式年时2位,但在函数可以使用4为的年

               

            --例2:指定格式化描述

                SELECTTO_DATE('07.04.75','MM.DD.YY')

                FROM dual;

                ----------------------

                SELECTTO_DATE('05-FEB-1998 19:36:36','DD.MON.YYYY HH24:MI:SS')

                FROM dual;

               

            --例3:YY与RR的区别

                SELECTTO_DATE(TO_CHAR('03-09-98','DD.MM.YY'),'DD-MM-YYYY')

                FROM dual;

                ----------------------

                SELECT TO_DATE(TO_CHAR('03-09-98','DD.MM.RR'),'DD-MM-YYYY')

                FROM dual;

           

        --3)TO_NUMBER  将字符串解析成数值

            --例1:

                SELECTTO_MUNBER('$12,345.69','$99,999.99')

                FROM dual;

               

.ROUND和TRUNC用于日期

        --1)ROUND函数:

            --例1:对星期进行计算

                SELECTROUND(TO_DATE('16-2月-2011','DAY')

                FROM dual;

                /*

                第一个参数必须是DATE类型,如果是日期直接量必须使用TO_DATE函数转换

                如果是周日到周三,结果为这个星期的第一天,否则为下个星期的第一天(1为周日)

                */

            --例2:对月份进行计算

                SELECTROUND(TO_DATE('16-10月-2010','MONTH')

                FROMdual;

                /*

                如果是1~15日,结果为当月的第一天

                否则为下个月的第一天

                */

            --例3:对年份进行计算

                SELECTROUND(TO_DATE('16-10月-2010','YEAR')

                FROMdual;

                /*

                如果是1~6月,结果为但年的第一天,

                否则为下一年的第一天

                */

        --2)TRUNC函数

            --例1:对象星期进行TRUNC计算,求这个星期的第一天

                SELECTTRUNC(TO_DATE('3-MAR-2010'),'DAY')

                FROM dual;

            --例2:对象月进行TRUNC计算,求这个月第一天

                SELECTTRUNC(TO_DATE('3-MAR-2010'),'MONTH')

                FROM daul;

            --例3:对象年进行TRUNC计算,求这一年的第一天

                SELECTTRUNC(TO_DATE('3-MAR-2010'),'YEAR')

                FROM daul;



    DECODE函数

        --例:

            SELECTfirst_name,last_name,job_id,salary,

                DECODE(

                    job_id,

                    'IT_PROG',salary*2,

                    'ST_CLERK',salary*1.2,

                    salary*1.1

                ) AS new_salary

            FROM employees

            ORDER BY job_id;

           

    CASE表达式

        --例1:

            SELECTfirst_name,last_name,job_id,salary,

                CASE job_id

                    WHEN 'IT_PROG'THEN salary*2

                    WHEN'ST_CLERK' THEN salary*1.2

                    ELSE salary*1.1

                END AS new_salary

            FROM employees

            ORDER BY job_id;

           

        --例2:搜索CASE表达式

            SELECTfirst_name,last_name,job_id,salary,

                CASE

                    WHEN job_id ='IT_PROG' THEN salary*2

                    WHEN job_id ='ST_CLERK' THEN salary*1.2

                    ELSE salary*1.1

                END AS new_salary

            FROM employees

            ORDER BY job_id;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值