Oracle三大型別(varchar2,number,date)轉換
Oracle中三大型別與隱式資料型別轉換
(1)varchar2變長/char定長-->number,例如:'123'->123
(2)varchar2/char-->date,例如:'25-4月-15'->'25-4月-15'
(3)number---->varchar2/char,例如:123->'123'
(4)date------>varchar2/char,例如:'25-4月-15'->'25-4月-15'
Oracle如何隱式轉換:
1)=號二邊的型別是否相同
2)如果=號二邊的型別不同,嘗試的去做轉換
3)在轉換時,要確保合法合理,否則轉換會失敗,例如:12月不會有32天,一年中不會有13月
【1】查詢1980年12月17日入職的員工(方式一:日期隱示式轉換)
select * from emp where hiredate = '17-12月-80';
【2】使用to_char(日期,'格"常量"式')函式將日期轉成字串,顯示如下格式:2015 年 04 月 25 日 星期六
select to_char(sysdate,'yyyy" 年 "mm" 月 "dd" 日 "day') from dual;
【3】使用to_char(日期,'格式')函式將日期轉成字串,顯示如格式:2015-04-25今天是星期六 15:15:15
select to_char(sysdate,'yyyy-mm-dd"今天是"day hh24:mi:ss') from dual;
或
select to_char(sysdate,'yyyy-mm-dd"今天是"day HH12:MI:SS AM') from dual;
【4】使用to_char(數值,'格式')函式將數值轉成字串,顯示如下格式:$1,234
select to_char(1234,'$9,999') from dual;
【5】使用to_char(數值,'格式')函式將數值轉成字串,顯示如下格式:¥1,234select to_char(1234,'$9,999') from dual;
select to_char(1234,'L9,999') from dual;
【6】使用to_date('字串','格式')函式,查詢1980年12月17日入職的員工(方式二:日期顯式轉換)
select * from emp where hiredate = to_date('1980年12月17日','yyyy"年"mm"月"dd"日"');
或
select * from emp where hiredate = to_date('1980#12#17','yyyy"#"mm"#"dd');
或
select * from emp where hiredate = to_date('1980-12-17','yyyy-mm-dd');
【7】使用to_number('字串')函式將字串‘123’轉成數字123
select to_number('123') from dual;
注意:
select '123' + 123 from dual;246
select '123' || 123 from dual;123123
SQL資料型別
-----------------------------------
以表格形式說明:
欄位型別 描述
bit 0或1的整型數字
int 從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字
smallint 從-2^15(-32,768)到2^15(32,767)的整型數字
tinyint 從0到255的整型數字
decimal 從-10^38到10^38-1的定精度與有效位數的數字
numeric decimal的同義詞
money 從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣資料,最小貨幣單位千分之十
smallmoney 從-214,748.3648到214,748.3647的貨幣資料,最小貨幣單位千分之十
float 從-1.79E+308到1.79E+308可變精度的數字
real 從-3.04E+38到3.04E+38可變精度的數字
datetime 從1753年1月1日到9999年12日31的日期和時間資料,最小時間單位為百分之三秒或3.33毫秒
smalldatetime 從1900年1月1日到2079年6月6日的日期和時間資料,最小時間單位為分鐘
timestamp 時間戳,一個數據庫寬度的唯一數字
uniqueidentifier 全球唯一識別符號GUID
char 定長非Unicode的字元型資料,最大長度為8000
varchar 變長非Unicode的字元型資料,最大長度為8000
text 變長非Unicode的字元型資料,最大長度為2^31-1(2G)
nchar 定長Unicode的字元型資料,最大長度為8000
nvarchar 變長Unicode的字元型資料,最大長度為8000
ntext 變長Unicode的字元型資料,最大長度為2^31-1(2G)
binary 定長二進位制資料,最大長度為8000
varbinary 變長二進位制資料,最大長度為8000
image 變長二進位制資料,最大長度為2^31-1(2G)
Oracle資料型別
VARCHAR2(size) 可變長度的字串,其最大長度為size個位元組;size的最大值是4000,而最小值是1;你必須指定一個VARCHAR2的size;
NVARCHAR2(size) 可變長度的字串,依據所選的國家字符集,其最大長度為size個字元或位元組;size的最大值取決於儲存每個字元所需的位元組數,其上限為4000;你必須指定一個NVARCHAR2的
size;
NUMBER(p,s) 精度為p並且數值範圍為s的數值;精度p的範圍從1到38;數值範圍s的範圍是從-84到127;
例如:NUMBER(5,2) 表示整數部分最大3位,小數部分為2位;
NUMBER(5,-2) 表示數的整數部分最大為7其中對整數的倒數2位為0,前面的取整。
NUMBER 表示使用預設值,即等同於NUMBER(5);
LONG 可變長度的字元資料,其長度可達2G個位元組;
DATE 有效日期範圍從公元前4712年1月1日到公元后4712年12月31日
RAW(size) 長度為size位元組的原始二進位制資料,size的最大值為2000位元組;你必須為RAW指定一個size;
LONG RAW 可變長度的原始二進位制資料,其最長可達2G位元組;
CHAR(size) 固定長度的字元資料,其長度為size個位元組;size的最大值是2000位元組,而最小值和預設值是1;
NCHAR(size) 也是固定長度。根據Unicode標準定義
CLOB 一個字元大型物件,可容納單位元組的字元;不支援寬度不等的字符集;最大為4G位元組
NCLOB 一個字元大型物件,可容納單位元組的字元;不支援寬度不等的字符集;最大為4G位元組;儲存國家字符集
BLOB 一個二進位制大型物件;最大4G位元組
BFILE 包含一個大型二進位制檔案的定位器,其儲存在資料庫的外面;使得可以以字元流I/O訪問存在資料庫伺服器上的外部LOB;最大大小為4G位元組.
Linux公社的RSS地址:ofollow,noindex" target="_blank">https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-09/154192.htm