5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)

简介:  1  多行函数(理解:有多个输入,但只输出1个结果)          SQL>select count(*) from emp;          COUNT(*)          -------------                14 B 字符函数Lower                             


1  多行函数(理解:有多个输入,但只输出1个结果)

         SQL>select count(*) from emp;

         COUNT(*)

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

               14

B 字符函数Lower                                    

select Lower('Hello') 转小写,

upper('hello') 转大写,

initcap('hello woRld')  首字母大写

from dual;

    结果:

                   转小  转大  首字母大写

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

                   helloHELLO Hello World

        

    C字符函数 concat

select  concat('hello','world') from dual

   

concat函数嵌套:

    select concat (concat('hello', 'world'),'cccc')  函数嵌套 from dual;

              函数嵌套

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

                  helloworldcccc

        

    D字符函数 substr()

SUBSTR(a,b) --- a中第b去字符串

substr(a, b, c) a中第b, c个字符....

 

select substr('abcdefg1111', 2) 从第二位取子串, 

substr('abcdefg1111', 2, 4) 4个字符

from dual;

                     从第二位取 4

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

                     bcdefg1111  bcde

 

E  length字符数   lengthb字节数

注意:一个中文字符,两个字节

select length('中国abc') 字符数,  

lengthb('中国abc') 字节数

from dual;

    运行结果:

                   字符数     字节数

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

                                5                                              

F instr(),lpad(),rpad(),trim()函数

select instr('abcdefg', 'efg') 求子串位置 from dual;

                            求子串位置

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

                                     5

         selectlpad('abcd', 10, '*') lpad, rpad('abcd', 10, '*') rpad from dual;

                            LPAD            RPAD

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

                            ******abcd abcd******         

                           

--trim 去掉前后指定的字符,字符可以是空格,也可以不是空格 .

         selecttrim('A' from 'ABCDEFg') from dual;

                 TRIM('

                            ------

                            BCDEFg

 

2  数字函数

第二个参数

含义

2> 0

保留2

= 0

保留到个位

-1

保留到10

-2

保留到百位(要看十位 四舍五入)

 

  selectround(45.926, 2) AA,

round(45.926, 1) BB,

round(45.926, 0) CC,

round(45.926) DD,

       round(45.926, -1) EE,

round(45.926, -2) FF

from dual;

  结果:

       AA         BB         CC         DD         EE         FF

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

       45.93      45.9         46         46         50          0

 

3  日期函数

时间的计算.......

         oracle数据库中 date包含 日期和时间

         mysql                        3中数据类型 date time times.

         A   selectto_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual ;

                   TO_CHAR(SYSDATE,'YY

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

                   2014-10-0716:34:17

                                                                          

         B   ----昨天今天明天

         select sysdate-1 昨天,

sysdate 今天,

sysdate+1 明天

from dual;

         selectto_char(sysdate-1, 'yyyy-mm-dd hh24:mi:ss') 昨天,

sysdate 今天,

sysdate+1 明天

from dual;

        

         C  ----查询员工的入职时间,按照   方式显示.....

         select(sysdate-hiredate)/7 , 

 (sysdate-hiredate)/30 ,

 (sysdate-hiredate)/365

                    from emp;

        

select (sysdate-hiredate)/7 ,  

(sysdate-hiredate)/30 , 

(sysdate-hiredate)/365

                     from emp;

                    

                  

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

                     1763.95625 411.589791 33.8292979

                     1754.67053 409.423125 33.6512157

                     1754.38482 409.356458 33.6457363

                                                                

          D  查询员工的入职时间, 入职月数

                   selectename,

(sysdate-hiredate)/30 估计月, 

MONTHS_BETWEEN(sysdate, hiredate) 函数计算月

                              from emp

                             

             select ename,

(sysdate-hiredate)/30 估计月, 

MONTHS_BETWEEN(sysdate, hiredate) 函数计算月

                              from emp;

ENAME          估计月 函数计算月

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

                              SMITH     411.589872 405.699876

                              ALLEN     409.423205 403.603102

                              WARD      409.356539 403.538586

                              JONES     408.056539 402.183747

                              MARTIN    402.089872 396.345037

                   selectnext_day(sysdate, '星期六') from dual ;

                   NEXT_DAY(SYSDA

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

                   11-10-14

 

4 数据类型转换

       select * from emp where hiredate >'01-1 -81'

A  日期相关类型转换

         比这个日期都要大的08-9 -81 所有员工信息 按照三种方式实现

    (1):隐式类型转换

         select*

from emp

               where hiredate > '01-1 -81';

   (2):字符串转成日期..显示类型转换

         select*

from emp

               where hiredate > to_date('1981-01-0102:03:04', 'yyyy-mm-dd hh24:mi:ss');

   (3):日期转换成为日期类型的字符串:

         select*

from emp

               where to_char(hiredate, 'yyyy-mm-ddhh24:mi:ss') > '1981-01-01 02:03:04'

        

5  数字和字符串转换

A  --查询员工的薪水:两位小数 本地货币代码 千位符

Y1,250.00

select empno, ename, to_char(sal, 'L9,999.99')

                   fromemp

         结果:

EMPNO ENAME     TO_CHAR(SAL,'L9,999

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

                            7369SMITH                 800.00

                            7499ALLEN               1,600.00

                            7521WARD                1,250.00

                            7566JONES               2,975.00

                            7654MARTIN              1,250.00

                            7698BLAKE               2,850.00

                            7782CLARK               2,450.00

                           

B  把这个字符¥1,250.00,转成数字.....

          select to_number('1,250.00','L9,999.99') from dual ;

          TO_NUMBER('1,250.00','L9,999.99')

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

                                           1250

6 通用函数

A  给员工涨工资:总裁 1000  经理:800  其他涨500,

 ===============================================

分析:前后工资给列出来

if (job == 'PRESIDENT')

             SAL+1000

else if (job == 'MANAGER')      

             SAL+800

else 

             SAL+500

   ================================================

         使用的知识点:

CASE expr WHEN comparison_expr1 THEN return_expr1

         [WHEN comparison_expr2 THENreturn_expr2

         WHEN comparison_exprn THEN return_exprn

         ELSE else_expr]

END

===============================================

    转化:

CASE job when 'PRESIDENT' then sal+1000

                   when'MANAGER' then sal+800

                            elsesal + 500

END

    =============================================

select ename, job, sal 涨前工资,

          (

               CASE job when 'PRESIDENT' then sal+1000

                                                  when'MANAGER' then sal+800

                                                  elsesal + 500

                            END

          )

         涨后工资

     from emp

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

     结果:

                                     ENAME      JOB         涨前工资   涨后工资

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

                                     SMITH      CLERK            800       1300

                                     ALLEN      SALESMAN        1600       2100

                                     WARD       SALESMAN        1250       1750

                                     JONES      MANAGER         2975       3775

                                     MARTIN     SALESMAN        1250       1750

                                     BLAKE      MANAGER         2850       3650

                                     CLARK      MANAGER         2450       3250

                                     SCOTT      ANALYST         3000       3500

                                     KING       PRESIDENT       5000       6000

                                     TURNER     SALESMAN        1500       2000

                                     ADAMS      CLERK           1100       1600

                                     JAMES      CLERK            950       1450

                                     FORD       ANALYST         3000       3500

                                     MILLER     CLERK           1300       1800

                                    

                                     已选择14行。

 

B   第二种方法

  ===================================================

    语法:

DECODE(col|expression, search1, result1

                               [, search2, result2,...,]

                               [, default])

==================================================

转化:

decode(job, 'PRESIDENT', sal+10000, 'MANAGER', sal+800, sal+500)

===================================================

select ename, job, sal 涨前工资,

             (

                     decode(job, 'PRESIDENT', sal+10000,'MANAGER', sal+800, sal+500)

           )

            涨后工资

      from emp;

目录
相关文章
|
4天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
286 116
|
19天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
6天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
408 38
Meta SAM3开源:让图像分割,听懂你的话
|
13天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
670 220
|
1天前
|
Windows
dll错误修复 ,可指定下载dll,regsvr32等
dll错误修复 ,可指定下载dll,regsvr32等
132 95
|
11天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1663 158
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
912 61