2018網(wǎng)站開(kāi)發(fā)最流行的語(yǔ)言產(chǎn)品推廣網(wǎng)站哪個(gè)好
目錄
Oracle類型轉(zhuǎn)換規(guī)則:
看如下實(shí)驗(yàn):
1、創(chuàng)建一張表,字段id的類型為number,id字段創(chuàng)建索引,插入一條測(cè)試數(shù)據(jù)
2、我們做如下查詢,id的值設(shè)置為字符型的'1'
3、查看執(zhí)行計(jì)劃:
Oracle類型轉(zhuǎn)換規(guī)則:
- 對(duì)于insert和update操作,oracle將值轉(zhuǎn)換為受影響的的列的類型。
- 對(duì)于select操作,oracle會(huì)將列的值的類型轉(zhuǎn)換為目標(biāo)變量的類型。
看如下實(shí)驗(yàn):
1、創(chuàng)建一張表,字段id的類型為number,id字段創(chuàng)建索引,插入一條測(cè)試數(shù)據(jù)
create table test(id number);create index idx_test_id on test(id);insert into test values(1);
2、我們做如下查詢,id的值設(shè)置為字符型的'1'
3、查看執(zhí)行計(jì)劃:
是不是很意外,Oracle沒(méi)有進(jìn)行類型轉(zhuǎn)換。使用了索引掃描,把'1'認(rèn)為是數(shù)值型的1。
其實(shí)任何的數(shù)值型都可以轉(zhuǎn)換為字符型。因此在一個(gè)數(shù)值型的字段上,添加to_char函數(shù)是多余的。
老外總結(jié)了一張圖,說(shuō)明了哪些類型間可以直接轉(zhuǎn)換,哪些需要在列上添加函數(shù)來(lái)轉(zhuǎn)換,非常的好:
-----------------------------------------------------------------------------------------------------------------------------
增加一個(gè)nvarchar2(10)字段name
alter table TEST add NAME VARCHAR2(10);
插入測(cè)試數(shù)據(jù)
insert into test values(1,'1');
查詢
explain plan for select * from test where name='1';
select * from table(dbms_xplan.display);
查詢
explain plan for select * from test where name=1;
select * from table(dbms_xplan.display);
?