`

日期类型转换(3)

阅读更多
三. 字符函数(可用于字面字符或数据库列)

1,字符串截取
   select substr('abcdef',1,3) from dual

2,查找子串位置
   select instr('abcfdgfdhd','fd') from dual

3,字符串连接
   select 'HELLO'||'hello world' from dual;

4, 1)去掉字符串中的空格
    select ltrim(' abc') s1,
    rtrim('zhang ') s2,
    trim(' zhang ') s3 from dual
   2)去掉前导和后缀
    select trim(leading 9 from 9998767999) s1,
    trim(trailing 9 from 9998767999) s2,
    trim(9 from 9998767999) s3 from dual;
  
5,返回字符串首字母的Ascii值
   select ascii('a') from dual

6,返回ascii值对应的字母
   select chr(97) from dual

7,计算字符串长度
   select length('abcdef') from dual

8,initcap(首字母变大写) ,lower(变小写),upper(变大写)
   select lower('ABC') s1,
       upper('def') s2,
       initcap('efg') s3
   from dual;

9,Replace
   select replace('abc','b','xy') from dual;

10,translate
   select translate('abc','b','xx') from dual; -- x是1位

11,lpad [左添充] rpad [右填充](用于控制输出格式)
   select lpad('func',15,'=') s1, rpad('func',15,'-') s2 from dual;
   select lpad(dname,14,'=') from dept;

12, decode[实现if ..then 逻辑]   注:第一个是表达式,最后一个是不满足任何一个条件的值
   select deptno,decode(deptno,10,'1',20,'2',30,'3','其他') from dept;
   例:
   select seed,account_name,decode(seed,111,1000,200,2000,0) from t_userInfo//如果seed为111,则取1000;为200,取2000;其它取0
   select seed,account_name,decode(sign(seed-111),1,'big seed',-1,'little seed','equal seed') from t_userInfo//如果seed>111,则显示大;为200,则显示小;其它则显

示相等

13 case[实现switch ..case 逻辑]
    SELECT CASE X-FIELD
         WHEN X-FIELD < 40 THEN 'X-FIELD 小于 40'
         WHEN X-FIELD < 50 THEN 'X-FIELD 小于 50'
         WHEN X-FIELD < 60 THEN 'X-FIELD 小于 60'
         ELSE 'UNBEKNOWN'
        END
   FROM DUAL
  
   注:CASE语句在处理类似问题就显得非常灵活。当只是需要匹配少量数值时,用Decode更为简洁。

四.数字函数
1,取整函数(ceil 向上取整,floor 向下取整)
   select ceil(66.6) N1,floor(66.6) N2 from dual;

2, 取幂(power) 和 求平方根(sqrt)
   select power(3,2) N1,sqrt(9) N2 from dual;

3,求余
   select mod(9,5) from dual;

4,返回固定小数位数 (round:四舍五入,trunc:直接截断)
   select round(66.667,2) N1,trunc(66.667,2) N2 from dual;

5,返回值的符号(正数返回为1,负数为-1)
   select sign(-32),sign(293) from dual;

五.转换函数
1,to_char()[将日期和数字类型转换成字符类型]
   1) select to_char(sysdate) s1,
        to_char(sysdate,'yyyy-mm-dd') s2,
        to_char(sysdate,'yyyy') s3,
        to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') s4,
        to_char(sysdate, 'hh24:mi:ss') s5,
        to_char(sysdate,'DAY') s6
    from dual;
   2) select sal,to_char(sal,'$99999') n1,to_char(sal,'$99,999') n2 from emp

2, to_date()[将字符类型转换为日期类型]
    insert into emp(empno,hiredate) values(8000,to_date('2004-10-10','yyyy-mm-dd'));
  
3, to_number() 转换为数字类型
    select to_number(to_char(sysdate,'hh12')) from dual; //以数字显示的小时数
  
六.其他函数
   1.user:
    返回登录的用户名称
    select user from dual;
   
   2.vsize:
    返回表达式所需的字节数
    select vsize('HELLO') from dual;
  
   3.nvl(ex1,ex2):  
    ex1值为空则返回ex2,否则返回该值本身ex1(常用)
    例:如果雇员没有佣金,将显示0,否则显示佣金
    select comm,nvl(comm,0) from emp;
  
   4.nullif(ex1,ex2):
    值相等返空,否则返回第一个值
    例:如果工资和佣金相等,则显示空,否则显示工资
    select nullif(sal,comm),sal,comm from emp;
  
   5.coalesce:  
    返回列表中第一个非空表达式
    select comm,sal,coalesce(comm,sal,sal*10) from emp;
  
   6.nvl2(ex1,ex2,ex3) :
    如果ex1不为空,显示ex2,否则显示ex3
    如:查看有佣金的雇员姓名以及他们的佣金
      select nvl2(comm,ename,') as HaveCommName,comm from emp;
  
  
七.分组函数
max min avg count sum
1,整个结果集是一个组
   1) 求部门30 的最高工资,最低工资,平均工资,总人数,有工作的人数,工种数量及工资总和
     select max(ename),max(sal),
     min(ename),min(sal),
     avg(sal),
     count(*) ,count(job),count(distinct(job)) ,
     sum(sal) from emp where deptno=30;
2, 带group by 和 having 的分组
   1)按部门分组求最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
    select deptno, max(ename),max(sal),
    min(ename),min(sal),
    avg(sal),
    count(*) ,count(job),count(distinct(job)) ,
    sum(sal) from emp group by deptno;
  
   2)部门30的最高工资,最低工资,总人数,有工作的人数,工种数量及工资总和
    select deptno, max(ename),max(sal),
    min(ename),min(sal),
    avg(sal),
    count(*) ,count(job),count(distinct(job)) ,
    sum(sal) from emp group by deptno having deptno=30;
  
3, stddev 返回一组值的标准偏差
    select deptno,stddev(sal) from emp group by deptno;
    variance 返回一组值的方差差
    select deptno,variance(sal) from emp group by deptno;

4, 带有rollup和cube操作符的Group By
    rollup 按分组的第一个列进行统计和最后的小计
    cube 按分组的所有列的进行统计和最后的小计
    select deptno,job ,sum(sal) from emp group by deptno,job;
    select deptno,job ,sum(sal) from emp group by rollup(deptno,job);
    cube 产生组内所有列的统计和最后的小计
    select deptno,job ,sum(sal) from emp group by cube(deptno,job);

八、临时表
   只在会话期间或在事务处理期间存在的表.
   临时表在插入数据时,动态分配空间
   create global temporary table temp_dept
   (dno number,
   dname varchar2(10))
   on commit delete rows;
   insert into temp_dept values(10,'ABC');
   commit;
   select * from temp_dept; --无数据显示,数据自动清除
   on commit preserve rows:在会话期间表一直可以存在(保留数据)
   on commit delete rows:事务结束清除数据(在事务结束时自动删除表的数据)
分享到:
评论

相关推荐

    日期跟long转换小工具

    然而,直接在代码中处理这两个类型之间的转换可能会较为复杂,尤其是在涉及到用户界面展示或需要理解时间戳值时。因此,该工具的存在极大地简化了这个过程。 日期转long的转换涉及到将日期对象转换为对应的时间戳。...

    一分钟理解日期类型转换和运算

    详细描述和案例 一分钟理解日期类型转换和运算

    常用类型转换扩展_C#_扩展_类型转换_

    2. **FromXXX()** 方法:与`ToXXX()`相反,用于将特定类型转换为其他类型,如`FromDate()`用于将日期字符串转换为`DateTime`对象。 3. **TryToXXX()** 和 `TryFromXXX()` 方法:模仿`TryParse()`模式,提供安全的...

    mysql数据类型转换

    - **日期类型** (`DATE`):表示日期值。 - **时间类型** (`TIME`):表示时间值。 - **日期时间类型** (`DATETIME`):表示日期和时间的组合值。 - **浮点数类型** (`DECIMAL`):表示固定精度的小数。 - **整数类型** ...

    JSON转换为JAVA对象及日期格式转换处理 -

    JSON转换为JAVA对象及日期格式转换处理 -

    c_时间类型转换

    ### C# 时间类型转换详解 在C#编程中,时间处理是常见的需求之一。本文将详细介绍如何使用`DateTime`类来进行各种时间类型的转换,并通过具体的示例代码来展示不同的转换方法及其应用场景。 #### 1. `DateTime` 类...

    struts2(时间日期类型转换器)

    时间日期类型转换器是Struts2框架中的一个重要组件,它专门用于处理日期和时间格式的转换问题。 在Java中,日期和时间通常表示为`java.util.Date`或`java.time`包下的类,如`LocalDate`、`LocalTime`和`...

    Mysql中类型转换

    ### MySQL中的类型转换 在MySQL中,类型转换是一项非常实用的功能,它可以帮助我们处理不同数据类型之间的转换,尤其是在处理如日期、数字与字符串等类型的相互转换时尤其有用。本文将详细介绍MySQL中常用的类型...

    sql server日期格式转换方法大全

    当需要将日期字段与其他非日期类型结合时,可能需要使用`CAST()`或`CONVERT()`。例如,将日期转换为整数(天数): ```sql SELECT CAST(myDate AS int) AS 'DaysSince1900' FROM myTable; ``` 6. 动态SQL和...

    ORACLE 自动类型转换

    本文将深入探讨“ORACLE 自动类型转换”这一主题,以帮助理解Oracle如何处理不同类型的数据以及可能遇到的问题。 Oracle数据库支持多种数据类型,如数值型(NUMBER、INTEGER、BINARY_INTEGER等)、字符型(VARCHAR2...

    易语言长整数与日期时间转换

    总结一下,易语言的长整数与日期时间转换是通过"日期_到长整数"和"长整数_到日期"这两个内置函数实现的,它们为开发者提供了方便的方式来在日期时间对象和长整数之间进行转换。而"CopyMemory"和"CopyMemory2"函数...

    类的转换C++的内部数据类型遵循隐式类型转换规则

    这种转换通常分为两种类型:转换构造函数和成员转换函数,这两种方法都遵循C++的隐式类型转换规则。 首先,转换构造函数是一种特殊的构造函数,它的作用是将非本类类型的对象转换成本类的对象。在给定的代码示例中...

    C# 的类型转换.doc

    本文将深入探讨C#中的装箱、拆箱、别名、数值类型转换、字符编码转换、字符串与数值及数组之间的转换,以及日期型数据的转换。 1. **装箱、拆箱与别名** - **装箱** 是将值类型转换为对应的引用类型,例如 `int` ...

    数据库技术sql数据类型转换

    3. **数字类型转换**: - `int` 到 `char`: ```sql SELECT CONVERT(char(20), ytd_sales) FROM titles WHERE type = 'trad_cook'; ``` - `float` 到 `money`: ```sql SELECT CAST(10.3496 AS money); ``...

    Date类型数据转换

    Date类型数据转换是Java编程语言中非常重要的一种数据类型转换。它可以将String类型的日期字符串转换为Date类型的日期对象,也可以将Date类型的日期对象转换为String类型的日期字符串。在本文中,我们将详细介绍Date...

    自定义类型转换器

    ### 自定义类型转换器 #### 一、概述 在Java编程中,经常需要处理不同数据类型之间的转换。例如,从用户界面获取的数据通常是字符串形式,而程序内部可能需要将其转换为日期、数字等其他类型。Struts2框架提供了一...

    C ++类型转换心得

    3. 泛型编程:尽可能利用模板和泛型编程,减少显式类型转换,提高代码的可读性和复用性。 4. 避免丢失精度:当从浮点类型转换为整数类型时,可能会丢失小数部分,需要注意潜在的数据损失。 总之,理解C++中的类型...

    STRUTS2类型转换

    Struts2的内建类型转换涵盖了大部分常见类型,包括但不限于String、boolean/Boolean、char/Character、整数类型(int/Integer、float/Float、long/Long、double/Double)、日期(使用当前时区的SHORT格式)以及数组...

    实验4 Struts2的类型转换与OGNL表达式语言.doc

    这种类型的转换器通常用于通用的数据类型转换,如日期格式转换等。全局类型转换器一旦配置好后,会在整个应用中被自动调用,无需在每个Action中重复定义。 #### 三、Struts2的自定义类型转换 自定义类型转换是...

Global site tag (gtag.js) - Google Analytics