kingbase中''與null的兼容

問題描述:

數(shù)據(jù)庫是oracle 模式時(shí)又固,參數(shù)ora_input_emptystr_isnull=on是為了兼容oracle?對(duì)于‘’作為null處理诀紊。

分析與解決方法:

以下是oracle環(huán)境下锦溪,’’ 比較結(jié)果:

SQL> create table t1 (id integer, name char (9) ) ;Table created.SQL> insert into t1 values(1,'') ;1 row created.SQL> select * from t1 where name='' ;no rows selectedSQL> select * from t1 where name is null;ID NAME

同樣颤芬,開啟ora_input_emptystr_isnull參數(shù)后哩至,KES結(jié)果如下:

test-# create table t1 (id integer,name char(9)) ;CREATE TABLEtest=# insert into t1 values(1, '') ;INSERT 0 1test=# select * from t1 where name=' ' ;id | name---+-------(10 rows )test=# select * from t1 where name is null;id | namc---+--------1? |(1 row)test=# show database_mode;database_mode----------------oracle(1 row)

2.1.2.?判斷值是否為空捕虽,要用?is?null??

問題描述:

對(duì)于空值使用?=‘’ 返回結(jié)果與is null返回結(jié)果不同

test=# show ora_input_emptystr_isnull;

ora_input_emptystr_isnull----------------------------on(1 row)

test=# create table t1 (id1 integer 幸海,id2 integer) ;

CREATE TABLEtest=# insert into t1 values (1, nul1) ;

INSERT 0 1

test=# insert into t1 values(2, '');

INSERT 0 1

test=# select * from t1 where id2 is null;

id1 | id2----+------1? |2? |

(2 rows)

test=# select * from t1 where id2='';id1? | id2-----+-----(0 rows)

分析與解決方法:

當(dāng)參數(shù)ora_input_emptystr_isnull=on時(shí)祟身,’’會(huì)轉(zhuǎn)換為null奥务,而null表示不確定的值,因此袜硫,NULL值比較只能是IS NULL或IS NOT NULL氯葬,不可以是= NULL?或<> NULL的的形式判斷,無論= NULL?或<> NULL父款,都是不成立的溢谤。

2.1.3.?PG模式下‘’值問題??

問題描述:

PG模式下,需要設(shè)置ora_input_emptystr_isnull=off憨攒,否則會(huì)有很多問題(因?yàn)檫@個(gè)參數(shù)本身就是為兼容oracle設(shè)置的世杀,必須在oracle模式下使用)。

分析與解決方法:

PG模式肝集,‘’行為如下:

test=# show ora_input_emptystr_isnull;

ora_input_emptystr_isnull--------------------------off

(1 rows)

test=# select * from t1 where name='';

id | name---+-----1? |(1 rows)

test=# select * from t1 where name is null;

id | name---+-----

(0 rows)

test=# set ora_input_emptystr_isnull=on;

SET

test=# select * from t1 where name='';

id | name---+-----1? |(1 rows)

test=# select * from t1 where name is null;

id | name---+------(0 rows)

2.1.4.?Ora_input_emptystr_isnull對(duì)于字符類型空值的影響??

問題描述:

當(dāng)insert數(shù)據(jù)時(shí)瞻坝,對(duì)于空值可以是?‘’(中間沒有空格)或?null,不同參數(shù)值結(jié)果是不同的杏瞻,會(huì)影響后續(xù)的select訪問結(jié)果所刀。

分析與解決方法:

1)?ora_input_emptystr_isnull=on 插入的數(shù)據(jù),‘’和null都會(huì)轉(zhuǎn)為null捞挥,之后的select操作不管ora_input_emptystr_isnull為何值浮创,返回結(jié)果都相同:

test=# show ora_input_emptystr_isull; --在參數(shù)開啟的情況下insert數(shù)據(jù)ora_input_emptystr_isull-------------------------on(1 row)

test=# create table t1(id integer,name varchar(9));
CREATE TABLEtest=# insert into tl values(1,''); --沒有空格

INSERT 0 1

test=# insert into 1 values(2,null);

INSERT 0 1test=# select * from tl where name is nu11;

id |name---+------1? |2? |(2 rows)

test=# select * from t1 where name='';

id | name---+------(0 rows)

test=# set ora_input_emptystr_isull=off;?

--參數(shù)改為off, 不影響select結(jié)果SET

test=# select * from t1 where name is null;id? | name----+------1? |2? |(2 rows)test=# select * from t1 where name='';id? | name---+------(0 rows)

2)?在ora_input_emptystr_isnull=off時(shí)插入的數(shù)據(jù)砌函,ora_input_emptystr_isnull值不同斩披,返回的結(jié)果也不同:

test=# show ora_input_emptystr_isnull;

ora_input_emptystr_isnull-------------------------off(1 row)

test=# create table t1 (id integer,name varchar(9));

CREATE TABLEtest=# insert intc t1 value(1,'');

INSERT 0 1

test=# insert inte tl values(2,null);

INSERT 0 1

test=# select * from t1 where name is null;

id | name---+-------2? |(1 row)

test=# select * trom tl where name='';
--與null不同id | name---+-------2? |(1 row)

test=# set ora_input_emptystr_isnull=on;

SET

test=# select * from t1 where name is null;

id | name---+------2? |(1 row)

test=# select * from t1 where name ''; --雖然開啟set ora_input_emptystr_isnull,對(duì)先前插入的數(shù)據(jù)無效id | name---+------(0 rows)

test=# select length(name) from t1 where id=1;

length--------0(1 row)

test=# select * from ti where name is not null;

id | name---+------1 |(1 row)

測(cè)試結(jié)論:數(shù)據(jù)內(nèi)部對(duì)于?‘’ 與?null值的存儲(chǔ)是不同的讹俊,當(dāng)ora_input_emptystr_isnull=on 時(shí)垦沉,不管的insert ‘’,?還是 where col=’’ 仍劈,’’ 都會(huì)轉(zhuǎn)為?null 厕倍,

2.1.5.?Ora_input_emptystr_isnull對(duì)于數(shù)值類型空值的影響??

問題描述:

對(duì)于integer類型數(shù)據(jù),當(dāng)ora_input_emptystr_isnull=off時(shí)贩疙,’’對(duì)于insert 或?select 都會(huì)因?yàn)轭愋娃D(zhuǎn)換問題報(bào)錯(cuò)讹弯。

分析與解決方法:

當(dāng)ora_input_emptystr_isnull=off時(shí),’’當(dāng)做字符串这溅,無法轉(zhuǎn)換成整型闸婴。當(dāng)ora_input_emptystr_isnull=on 時(shí),’’被轉(zhuǎn)成null芍躏,而null 沒有類型約束,所以轉(zhuǎn)換沒有問題降狠。

1)?當(dāng)ora_input_emptystr_isnull=on 对竣,insert 與?select 對(duì)于?‘’ 都沒問題

test=# show ora_input_emptystr_isnull;

ora_input_emptystr_isnull-------------------------on(1 row)

test=# create table t1 (id1 integer,id2 integer);

CREATE TABLE

test=# insert intc t1 value(1,null);

INSERT 0 1

test=# insert inte tl values(2,'');--可以insert ''INSERT 0 1

test=# select * from t1 where id2 is null;

id1 | id2----+-------1? |2? |(2 rows)

test=# select * trom tl where id2='';id1 | id2----+-------(0 row)

2)?當(dāng)ora_input_emptystr_isnull=off 庇楞,insert 與?select 對(duì)于?‘’都有問題

test=# show ora_input_emptystr_isnull;ora_input_emptystr_isnull-------------------------off(1 row)

test=# select * from t1 where id2 is null;?

?id1 | id2? ----+-------? 1? |? 2? |(2 rows)

test=# select * from t1 where id2='';--對(duì)于條件轉(zhuǎn)換有問題ERROR: invalid input syntax for type integer:""LINE 1:select * from tl where id2='';

test=# create table t1 (id1 integer,id2 integer);

CREATE TABLE

test=# insert intc t1 value(1,null);INSERT 0 1

test=# insert into tl values(2,'');-

-不可以insert ''ERROR: invalid input synlax for type integer:""LINE 1: insert into t1 values(2,'');

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市否纬,隨后出現(xiàn)的幾起案子吕晌,更是在濱河造成了極大的恐慌,老刑警劉巖临燃,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睛驳,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡膜廊,警方通過查閱死者的電腦和手機(jī)乏沸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爪瓜,“玉大人蹬跃,你說我怎么就攤上這事∶” “怎么了蝶缀?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)薄货。 經(jīng)常有香客問我翁都,道長(zhǎng),這世上最難降的妖魔是什么谅猾? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任柄慰,我火速辦了婚禮,結(jié)果婚禮上赊瞬,老公的妹妹穿的比我還像新娘先煎。我一直安慰自己,他們只是感情好巧涧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布薯蝎。 她就那樣靜靜地躺著,像睡著了一般谤绳。 火紅的嫁衣襯著肌膚如雪占锯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天缩筛,我揣著相機(jī)與錄音消略,去河邊找鬼。 笑死瞎抛,一個(gè)胖子當(dāng)著我的面吹牛艺演,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼胎撤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼晓殊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伤提,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤巫俺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后肿男,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體介汹,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年舶沛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘹承。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冠王,死狀恐怖赶撰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柱彻,我是刑警寧澤豪娜,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站哟楷,受9級(jí)特大地震影響瘤载,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卖擅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一鸣奔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惩阶,春花似錦挎狸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冬筒,卻和暖如春恐锣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舞痰。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工土榴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人响牛。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓玷禽,卻偏偏與公主長(zhǎng)得像赫段,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矢赁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容