Oracle-第二章-数据类型

这篇具有很好参考价值的文章主要介绍了Oracle-第二章-数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

二、数据类型

1数字

整型(整数型)int/integer
浮点型(小数)float
在oracle中常用NUMBER(包括以上两类)定义数据的数字类型

####
定义数据类型 number(10,2)指定义一个长度为10精度为2的数字类型
键入 1234567890 报错
键入 1234 得 1234.00
键入 .123456788890 得.12
--思考:如果把该类型转换成字符串,那么会不会存在看不见的空格?like关键字能使用吗?(目前不知道怎么转换-可以用to_char转换)

####
to_number把字符串变成数字
注意:
select *
from student s 
where from s.gender=1;--隐式类型转换
等同于
select *
from student s 
where from to_number(s.gender)=1;
--等号两边类型不一致的时,会将左边转换成右边类型,从而报错ORA-01722

1.1四则运算(加减乘除)

select * from dual;--dual表用于进行试验性操作,得一行一列的结果
select 1/3 from dual;--得3.333333333....

1.2取余(mod函数)

select mod(10,3) from dual;--得1

1.3截取(trunc函数,round函数-四舍五入-常用)

select trunc(1.2345) from dual;--得1
select trunc(1.2345,3)from dual;--得1.234
select trunc(125341.2345,-3)from dual;--得120000
 
select round(1.2345) from dual;--得1
select round(1.2345,3)from dual;--得1.235 
select round(125341.2345,-3)from dual;--得130000
--把小数换成分数一样可以运行

特别注意:
题|随机返回1-10的整数
select trunc(dbms_random.value(1,11)) from dual;
select round(dbms_random.value(1,10)) from dual;--但是此处1和10的几率小于其他数

1.4值(abs函数)

select abs(-1) from dual;得1

1.5乘方(power函数)

select power(3,4) from dual;--3的4次方

1.6平方根(sqrt函数)

select sqrt(4) from dual;--得2(注意和数学运算有所区别)

select power(4,1/2) from dual;--得2(也可)

1.7向上取整(ceil函数)

select ceil(1.2) from dual;--得2

1.8向下取整(floor函数)

select floor(1.2) from dual;--得1

1.9伪随机数(dbms_random.value函数-在oracle中很少用)

select dbms_random.value() from dual;
--得到值在[0,1)之间,没有括号也可以
select dbms_random.value(1,5) from dual;
--得到在[1,5)之间

1.10函数组合用法

例:随机得到1-10的整数
select trunc(dbms_random.value(1,11)) from dual;
select round(dbms_random.value(1,10))from dual;

1.11其他函数(不常用)

exp(n)返回e的n次幂
sin(n)返回n的正弦值(n为弧度)
cos(n)返回n的余弦值(n为弧度)
log(n1,n2)返回以n1为底n2的对数
sign(n)若n为负则返回-1,为正返回1,为返回

2字符串

char()固定长度字符串, varchar()可变长度字符串
当用通配符‘%’检索时
'6,7,8' char(10) 实际上8后面还存在空格 '%,8' 查询不出来
'6,7,8' varchar(10) 此处8后面就不存在空格 '%,8' 因此可以查询出来--你以为是小问题,其实是大问题,不能不求甚解

select '8'+5 from dual;--字符串类型的数字和数字类型的数字可以进行运算

2.1字符串连接(显示更有意义的信息)

连接字符串时,如果在字符串中加入数值,那么可以直接指定数字值;
如果在字符串中加入字符值或者日起值,那么必须用单引号引住
(1)用||连接字符串
select ename|| ' ''s job '||job from emp;--注意 ''两个单引号等同于一个单引号字符
select 1||2||3||4||5 from dual;--也可以连接数字变成字符串

(2) 用函数CONCAT连接字符(只了解即可)
select concat(concat(ename,'''s salary is'),sal)from emp;

题|
select * from test1 where ','||cs||',' like'%,8,%';
--可查找列中仅数字8但不要28,88等,如找到‘1,3,8’,‘4,566,7,8’,‘8,95’,‘7,8,88,9’

2.2字符串长度

select s.name,length(s.name) from student s;

2.3截取字符串

select 'zhangzhang',substr('zhangzhang',6,2) from dual;--从第六位开始截取2个字符得'zh'
select 'zhangzhang',substr('zhangzhang',6) from dual;--从第六位开始截取剩余的全部字符得'zhang'
select 'zhangzhang',substr('zhangzhang',-3) from dual;--从倒数第三位开始截取剩余的全部字符得'ang'

2.4替换字符串

select 
replace('zhangjianjian','jianjian','hhh')
from dual;
--得zhanghhh
--若第三个参数为空则替换为空

2.5查询字符串的位置

语法:instr(s1,s2[,i][,j])
     s2在s1中从第i个字符第j次出现的位置,i,j默认是1
select 
instr('zhangjianjian','an',5,2)
from dual;
--返回12
select 
instr('zhangjianjian','an',1,2)
from dual;    
--返回8

####
select 
instr('zhangjianjian','an')
from dual;--查询个‘an’的位置

select 
instr('zhangjianjian','an',4)
from dual;--查询从第四位开始往后的个‘an’的位置,返回8

select 
instr('zhangjianjian','an',3)
from dual;--注意:返回3

select 
instr('zhangjianjian','an',-1)
from dual;
--得12
--当第三个参数为负数时,搜索将从右向左进行,但是返回位置还是从左向右计算的

2.6其他函数

(1)大小写转换
select upper('zhangJIANJINA')
from dual;
select lower('zhangJIANJINA')
from dual;


(2)去除空格
select trim('    zhangjianjian    ')
from dual;
--去左边
select ltrim('    zhangjianjian    ')
from dual;
--去两边
select rtrim('    zhangjianjian    ')
from dual;
--去两边


(3)填充
select lpad('jian',10,'a')
from dual;
--左填充,使字符串长度达到10,不足的用第三个参数补齐,没有第三个参数则用空格补齐
--rpad右填充
--如果字符大于二个参数要求则从左到右截取第二个参数要求的长度



####
(4)返回字符的ASCII值、返回ASCII值的字符串
select ascii('\n'),ascii('A'),ascii('a')
from dual;
--得
ASCII('\N') ASCII('A')  ASCII('A')
92          65          97
--换行键是 10
--92是 \

select chr(92),chr(65),chr(97)
from dual;
--得
CHR(92) CHR(65) CHR(97)
\       A        a


(5)字符串每个单词首字母大写(INITCAP)(用空格、标点符号、控制字符来区分单词)
select initcap('zhang jian jian')
from dual;

(6)条件取值 decode
语法: decode(条件,值1,翻译值1.值2,翻译值2,.....值n,翻译值n,缺省值)

3日期

(date,timestamp)文章来源地址https://www.toymoban.com/news/detail-475754.html

3.1日期转字符串

select to_char(sysdate,'yyyy/mm/dd hh[24]:mi:ss q day')
from dual;
--分别对应年、月、日、时(如果是hh24则是24小时制,否则默认12小时制)、分、秒、季度、星期
--顺序可以调整
--sysdate是关键字,表示当前服务器的时间(非网络时间)
--中间的符号和空格可以用其他符号替换,但是目前不清楚怎么用汉字或者字母替换
--此外注意如果to_char('mm')只能知道是哪个月,不能知道是哪年哪月

3.2字符串转日期

select to_date('0101','mmdd') 
from dual;
--不带年份则默认为当年
--可依照日期转字符串反向思考
####
注意:
--如果条件添加为时间等于时间,应将时间转换成字符串
select * 
from student s
where to_char(s.birthday,'yyyymmdd')='20220101';
--查询2022年1月1日出生的人
 
--如果把字符串变成时间会导致不
select * 
from student s
where to_date('20220101','yyyymmdd')=s.birthday;
--因为日期实际上有很多位,包括时分秒等,所以无法相等

3.3日期的加减(日期格式之间不能相加)

select sysdate+.5,sysdate-1 
from dual;
--加半天,减一天
--两个时间只能想减,不能相加,得天数

3.4日期截取

(1)trunc函数(得到个时刻)
select trunc(sysdate)
from dual;
--得到当天凌晨的时间
--截取后仍然是date格式
select turnc(sysdate,'mm')
from dual;
--yyyy截取到当年个时刻
--mm截取到当月第个一时刻
--dd截取到当日个时刻
--day截取到当周个时刻
--(Oracle按照美国的习惯,每周的天为周日,如果得到周一则需要后+1,trunc(sysdate,'day')+1)
--其他类推

3.5当月后一天

select last_day(sysdate) 
from dual;
--返回当月的后一天的同一时刻,如1.31,2.28等(注意不是准点时刻)
####
--如果要上个月的后一天,建议先查找上个月,然后再查找后一天
select last_day(add_months(sysdate,-1))
from dual;

3.6月份相加减

select add_months(sysdate,1),add_months(sysdate,-2)
from dual;

3.7其他函数

(1)两个时间相差的月数
select months_between(add_months(sysdate,5),sysdate)
from dual;
--前一个减去后一个时间相差的月份
(2)从某时刻开始算的下一个周几
select next_day(sysdate,1)
from dual;
--1代表星期天
--注意:如果今天是周三,那下一个周四是明天

####
(3)时区
new_time(d1,t1,t2)
--d1是日期类型
--返回t1时区的d1时间在t2时区的时间

到了这里,关于Oracle-第二章-数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab 数字图像 第二章 矩阵及其运算

    目录 2.1 矩阵的创建 2.1.1 直接输入: 2.1.2 载入外部数据文件 2.1.3 利用内置函数创建 2.2 矩阵的寻访 2.2.1 下标元素访问 2.2.2  访问单元素 2.3 矩阵的拼接 2.3.1 矩阵拼接符[] 2.3.2  函数 2.4 矩阵的运算 2.4.1 加减 2.4.2 乘除 2.4.3乘方 2.4.4 按位运算 2.4.5 行列式与秩 2.4.6 逆与迹 2.4.7 矩

    2023年04月09日
    浏览(40)
  • 概率论第二章 随机变量的分布与数字特征

    (ps:主要依照课本目录总结一下要记的公式期望和方差,概念去课本上看) 随机变量一般用大写XYZ表示,取值一般用小写xyz表示                 分布函数性质 1、单调性:若x1=x2,则F(x1)=F(x2);(单调递增) 2、F(负无穷)=0,F(正无穷)=1 2、右连续性:F(x+0)=F(x) 区间概率表示:

    2024年04月27日
    浏览(34)
  • 【考研数学】概率论与数理统计 —— 第二章 | 一维随机变量及其分布(1,基本概念与随机变量常见类型)

    暑假接近尾声了,争取赶一点概率论部分的进度。 设随机试验 E E E 的样本空间为 Ω Omega Ω , X X X 为定义于样本空间 Ω Omega Ω 上的函数,对于任意 w ∈ Ω w in Omega w ∈ Ω ,总存在唯一确定的 X ( w ) X(w) X ( w ) 与之对应,称 X ( w ) X(w) X ( w ) 为随机变量,一般记为 X X X 。 随机

    2024年02月11日
    浏览(45)
  • 第二章-数据传输安全

    VPN虚拟专用网 :在ISP运营商公用网络中搭建专用的安全数据通道 VPN :隧道 – 封装技术 常见VPN :IPSec VPN、MPLS VPN、GRE VPN、SangFor VPN、PPTP VPN、L2TP VPN / L2F VPN 1)按应用场景分(业务类型) Client-LAN VPN(access VPN)客户端到网络:PPTP VPN、L2TP VPN / L2F VPN、SSL VPN、IPSec VPN LAN-LAN V

    2024年01月23日
    浏览(49)
  • 大数据之路-日志采集(第二章)

    阿里巴巴的日志采集体系方案包括两大体系: Ap us.JS Web(基于浏览器)日志采集技术方案: UserTrack APP 端(无线客户端 日志采集技术方案。 本章从浏览器的页面日志采集、无线客户端的日志采集以及我们遇到的日志采集挑战三块内容来阐述间里巴巴的日志采集经验。 浏览器

    2024年01月25日
    浏览(48)
  • 【第二章:数据的表示和运算】

    探讨的两大主题:一步步递进 那么现在就需要探究 数据如何以2进制的形式在计算机中表示的呢?? 那么还有就是计算机如何进行数据的算术和逻辑运算的?? 我们平常使用的是10进制的数据,然而计算机能够识别的是2进制的01序列串。 主要是权重的不同。一方面符号表示

    2024年02月04日
    浏览(46)
  • 【数据结构】第二章——线性表(4)

    大家好,很高兴又和大家见面啦!!! 在前面的内容中我们介绍了线性表的第一种存储方式——顺序存储,相信大家经过前面的学习应该已经掌握了对顺序表的一些基本操作了。今天,我们将开始介绍线性表的第二种存储方式——链式存储。 线性表中的数据元素在存储时,

    2024年02月04日
    浏览(49)
  • 【数据结构】第二章——线性表(3)

    大家好,很高兴又和大家见面了!!! 在上一篇中,咱们介绍了顺序表的基本概念,以及通过C语言实现顺序表的创建和对表长的修改。今天咱们将详细介绍一下使用C语言实现顺序表的增删改查。接下来,跟我一起来看看今天的内容吧!!! 我们先来回顾一下上一篇的内容,

    2024年02月04日
    浏览(54)
  • 第二章 数据处理篇:transforms

    教程参考: https://pytorch.org/tutorials/ https://github.com/TingsongYu/PyTorch_Tutorial https://github.com/yunjey/pytorch-tutorial 详细的transform的使用样例可以参考:ILLUSTRATION OF TRANSFORMS 你得到的原始数据,可能并不是你期望的用于模型训练的数据的形式,比如数据中图像的大小不同、数据的格式不

    2024年02月08日
    浏览(36)
  • 【数据结构】第二章——线性表(2)

    大家好,很高兴又和各位见面啦!!!在上一个篇章中,我们简单了解了一下线性表的基础知识以及一下重要的术语。在今天的篇章中我们将来开始正式介绍线性表的顺序存储——又称顺序表。我们将会在本章介绍什么是顺序表,对于顺序表的操作我们又应该如何实现。接下

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包