Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开
测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库
这oracle比sql安全,强大多了,所以你需要学习,最重要的,你要是考网络警察公务员,这玩意你不会就别去报名了,耽误时间!
oracle系列文章:
【1】Oracle数据库:啥是oracle数据库?你为啥要学oracle?
【2】Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样
【3】Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法
【4】Oracle数据库:创建表空间,创建新用户,给用户分配对象、角色和系统权限,登录新用户建表
【5】Oracle数据库:链接配置,包括sqlnet.ora里面的transnames.ora配置数据库标识符SID,listener暂时简单了解
【6】Oracle数据库:net configureation assistant工具配置监听listener,配置本地网络访问服务器上的数据库
【7】Oracle数据库:oracle字符类型、数字类型、创建表表名的命名规则
【8】Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写
【9】Oracle数据库:表的关系:一对多,一对一,多对多,一一继承和修改的关系,表不是重点,重点是数据和约束关系
【10】Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作
【11】Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句
【12】Oracle数据库:逻辑运算and,or,not和各种运算的优先级控制
【13】Oracle数据库:排序order by语句,select from where order by的执行先后顺序,各种样例
【14】Oracle数据库:oracle函数,单行函数,多行函数,upper,lower,initcap,字符串函数
【15】Oracle数据库:数字函数,日期函数,round,trunc,mod,months_between,add_months,next_day,last_day,sysdate


文章目录

  • Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数
    • @[TOC](文章目录)
  • oracle数据类型转换
  • 显示数据类型转换
    • 数字和日期转字符
    • to_char()将数字转化为字符串
    • 字符转数字
    • 字符转日期
  • 总结

oracle数据类型转换

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第1张图片
Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第2张图片
日期,其实,已经把它隐式转换了
我们给了日月年
hire_date实际上是日期date类型
我们给了字符串,实际上oracle会自动转

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第3张图片

SQL> select employee_id from employees where employee_id='206';

EMPLOYEE_ID
-----------
        206

SQL> select employee_id from employees where employee_id=206;

EMPLOYEE_ID
-----------
        206

你看我们给了字符串,或者数字
它都会自动给你转化为number类型的

这就是隐式类型的转换很舒服——但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换

为什么待会讲!!!
Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第4张图片
这里要是表达式赋值转换,是只能单向的
不支持反过来
Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第5张图片
Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第6张图片
所以,千万不要用隐式转换!!!!!
所以,千万不要用隐式转换!!!!!
所以,千万不要用隐式转换!!!!!
所以,千万不要用隐式转换!!!!!

知道就行了

显示数据类型转换

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第7张图片
Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第8张图片

数字和日期转字符

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第9张图片
我猜有第二个参数,就是日期格式
没有第二个参数,那就是数字

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第10张图片
在这里插入图片描述

month月全名
mon月简写
mm月数字

dy星期几的简写
day星期几
dd是一个月的哪天,号数

SQL> select to_char(sysdate,'yyyy') from dual;

TO_CHAR(SYSDATE,'YYYY')
-----------------------
2022

SQL> select to_char(sysdate,'year') from dual;

TO_CHAR(SYSDATE,'YEAR')
------------------------------------------
twenty twenty-two

SQL> select to_char(sysdate,'mm') from dual;

TO_CHAR(SYSDATE,'MM')
---------------------
10

SQL> select to_char(sysdate,'month') from dual;

TO_CHAR(SYSDATE,'MONTH')
------------------------
10SQL> select to_char(sysdate,'mon') from dual;

TO_CHAR(SYSDATE,'MON')
----------------------
10SQL> select to_char(sysdate,'dy') from dual;

TO_CHAR(SYSDATE,'DY')
---------------------
星期二

SQL> select to_char(sysdate,'day') from dual;

TO_CHAR(SYSDATE,'DAY')
----------------------
星期二

SQL> select to_char(sysdate,'dd') from dual;

TO_CHAR(SYSDATE,'DD')
---------------------
25

这都号好说

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第11张图片
等等,各种骚
Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第12张图片

SQL> select to_char(sysdate,'AM') from dual;

TO_CHAR(SYSDATE,'AM')
---------------------
下午

SQL> select to_char(sysdate,'HH') from dual;

TO_CHAR(SYSDATE,'HH')
---------------------
06

SQL> select to_char(sysdate,'HH12') from dual;

TO_CHAR(SYSDATE,'HH12')
-----------------------
06

SQL> select to_char(sysdate,'MI') from dual;

TO_CHAR(SYSDATE,'MI')
---------------------
49

SQL> select to_char(sysdate,'ss') from dual;

TO_CHAR(SYSDATE,'SS')
---------------------
23

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第13张图片

SQL> select to_char(sysdate,'HH:MI::ss AM') from dual;

TO_CHAR(SYSDATE,'HH:MI::SSAM')
------------------------------
06:51::16 下午

你可以给常量串,做拼接

10月25日

SQL> select to_char(sysdate,'dd "of" mm') from dual;

TO_CHAR(SYSDATE,'DD"OF"MM')
---------------------------
25 of 10

还能拼数字前缀
dd天
spth
spell 出th

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第14张图片

SQL> select to_char(sysdate,'ddspth') from dual;

TO_CHAR(SYSDATE,'DDSPTH')
-------------------------
twenty-fifth

SQL> select to_char(sysdate,'ddth') from dual;

TO_CHAR(SYSDATE,'DDTH')
-----------------------
25th

SQL> select to_char(sysdate,'ddsp') from dual;

TO_CHAR(SYSDATE,'DDSP')
-----------------------
twenty-five

25号的各种写法

SQL> select to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual;

TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日"')
------------------------------------
20221025SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DD')
-----------------------------
2022-10-25

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第15张图片
没有小时分钟秒,那就是默认12:00

SQL> select last_name, to_char(hire_date,'yyyy"年"mm"月"dd"日"hh:mi:ss am') from employees;

LAST_NAME                 TO_CHAR(HIRE_DATE,'YYYY"年"MM"月"DD"日"HH:MI:SSAM')
------------------------- ------------------------------------------------
King                      2003061712:00:00 上午
Kochhar                   2005092112:00:00 上午
De Haan                   2001011312:00:00 上午
Hunold                    2006010312:00:00 上午
Ernst                     2007052112:00:00 上午
Austin                    2005062512:00:00 上午
Pataballa                 2006020512:00:00 上午

反正你要转的各种格式,要熟悉,用法写好就行了
挺爽的

希望考试别考太复杂了

to_char()将数字转化为字符串

可能需要加千位符号,
这时候就需要将数字,放入字符

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第16张图片
关键就是第二个模板参数
看样例
9是占位

SQL> select to_char(346.555,'999,999.99') from dual;

TO_CHAR(346.555,'999,999.99')
-----------------------------
     346.56

格式的长度,可以大于你真实数字的长度

但是模板不够长,就gg

SQL> select to_char(123456346.555,'999,999.99') from dual;

TO_CHAR(123456346.555,'999,999.99')
-----------------------------------
###########

所以格式不匹配就gg
最好模板格式的长度要大于等于实际数字的长度
懂?

SQL> select to_char(56346.555,'099,999.99') from dual;

TO_CHAR(56346.555,'099,999.99')
-------------------------------
 056,346.56

如果是0,就是强制转0

SQL> select to_char(56346.555,'$99,999.99') from dual;

TO_CHAR(56346.555,'$99,999.99')
-------------------------------
 $56,346.56

SQL> select to_char(56346.555,'L99,999.99') from dual;

TO_CHAR(56346.555,'L99,999.99')
-------------------------------56,346.56

加美元和人民币

FM是去掉前后空格

SQL> select to_char(46.555,'99,999.99') from dual;

TO_CHAR(46.555,'99,999.99')
---------------------------
     46.56

SQL> select to_char(46.555,'fm99,999.99') from dual;

TO_CHAR(46.555,'FM99,999.99')
-----------------------------
46.56

前面的控制gg了

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第17张图片

SQL> select last_name,to_char(salary,'fm999,999,999.00') from employees where last_name='Whalen';

LAST_NAME                 TO_CHAR(SALARY,'FM999,999,999.00')
------------------------- ----------------------------------
Whalen                    4,400.00

加美元

SQL> select last_name,to_char(salary,'fm$999,999,999.00') from employees where last_name='Whalen';

LAST_NAME                 TO_CHAR(SALARY,'FM$999,999,999.00')
------------------------- -----------------------------------
Whalen                    $4,400.00

很容易的

字符转数字

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第18张图片
格式和上面的数字转字符串一样
Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第19张图片
不过就是数字而已

SQL> select to_number('$456.84','$999.99') from dual;

TO_NUMBER('$456.84','$999.99')
------------------------------
                        456.84

后面的格式要转化的字符的格式
前面的格式就是$999.99的格式
长度也是要长的

当年你把456.84转字符的时候用的就是这个格式:$999.99
逆转也是一样的道理
这些比java和Python复杂,但是本质就一样

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第20张图片

SQL> select to_number('$34346.84','$99999.99') from dual;

TO_NUMBER('$34346.84','$99999.99')
----------------------------------
                          34346.84

很简单的

字符转日期

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第21张图片
日期转字符
字符转日期
格式一样

SQL> select to_date('2022','fmyyyy') from dual;

TO_DATE('2022','FMYYYY')
------------------------
2022/10/1

SQL> select to_date('2022-03-09','fmyyyy-mm-dd') from dual;

TO_DATE('2022-03-09','FMYYYY-MM-DD')
------------------------------------
2022/3/9

SQL> select to_date('2022-03-09 11:57','fmyyyy-mm-dd hh:mi') from dual;

TO_DATE('2022-03-0911:57','FMYYYY-MM-DDHH:MI')
----------------------------------------------
2022/3/9 11:57:00

字符串转日期,返回就是date类型

Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数_第22张图片

SQL> select to_date('2022-03-09 11:30','fmyyyy-mm-dd hh:mi') from dual;

TO_DATE('2022-03-0911:30','FMYYYY-MM-DDHH:MI')
----------------------------------------------
2022/3/9 11:30:00

灰常容易了

SQL> select to_date('2022年3月9日 11点30分','fmyyyy"年"mm"月"dd"日"hh"点"mi"分"') from dual;

TO_DATE('2022年3月9日11点30分','FMYYYY"年"MM"月"DD"日"HH"点"MI"分"')
----------------------------------------------------------
2022/3/9 11:30:00

汉字要用点
不能用时
挺烦的这
还是上面那种不用汉字的格式舒服


总结

提示:重要经验:

1)
2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

你可能感兴趣的:(oracle,数据库,oracle,sql,类型转换函数,数字日期转字符)