oracle 怎么判斷數(shù)據(jù)為空
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了五華免費(fèi)建站歡迎大家使用!
需要確定具體是某個(gè)字段為空,還是為:' ' 這樣的格式。如果是確實(shí)為空,那用is null 就可以查出來,如果是后面的就需要用like 字段名 like '% %'
空值null比較特殊能通=或者進(jìn)行查詢能用is null或者is not null進(jìn)行查詢例數(shù)據(jù)null值用 字段名=1字段名1字段名=null都能條數(shù)據(jù)檢索字段名 is null能檢索 所需要查詢數(shù)據(jù)兩種!
在sql中
空值有NULL 和''的形式
當(dāng)是NULL的時(shí)候用 IS NULL判斷
當(dāng)是''的時(shí)候用 =''判斷
比如
select * from table where enddate IS NULL;
select * from table where str='';
yyy上面有索引的話非??斓?。
或者還有另外一種方法,你可以試一下。
alter table xxx modify yyy not null ;
dexter@REPOalter?table?ts?modify?id?not?null?;
alter?table?ts?modify?id?not?null
*
第?1?行出現(xiàn)錯(cuò)誤:
ORA-02296:?無法啟用?(DEXTER.)?-?找到空值
如果有空值就會報(bào)錯(cuò)。
需要用到循環(huán)及動態(tài)sql。
如test表中有如下數(shù)據(jù),其中id和name列有空值。
執(zhí)行以下內(nèi)容:
declare?
v_count?int;--定義變量
v_col?varchar2(20);--定義變量
v_sql?varchar2(2000);--定義變量
v_last_col?varchar2(20);--定義變量
cursor?cur_col?is?select?column_name?from?user_tab_cols?where?table_name='TEST'?order?by?column_id;--定義游標(biāo)
begin
select?column_name?into?v_last_col??from?user_tab_cols?where?table_name='TEST'?and?column_id=(select?max(column_id)?from?user_tab_cols?where?table_name='TEST');--取出表中最后一個(gè)字段放入v_last_col
open?cur_col;--打開游標(biāo)
loop?--執(zhí)行循環(huán)
fetch?cur_col?into?v_col;--取出游標(biāo)內(nèi)容到變量v_col
v_sql:='select?count(*)?from?TEST?where?'||v_col||'?is?null';
execute?immediate?v_sql?into?v_count;--執(zhí)行動態(tài)sql
if?v_count0--如果查詢有空值的字段不為空,則輸出此字段名
then
dbms_output.put_line(v_col);?
end?if;
exit?when?v_col=v_last_col;?--退出循環(huán)條件
end?loop;--結(jié)束循環(huán)
close?cur_col;--關(guān)閉游標(biāo)
end;
執(zhí)行結(jié)果: