Oracle PL SQL中對空字串的判斷

2022-01-29 20:35:24 字數 1642 閱讀 2821

目錄寫在最前面:在oracle 11g中乙個空字串和零個字元是沒有區別的。

今天在使用oracle編寫pl/sql程式的時候,發現乙個問題,我的表中本身不是空字串,但是在使用if語句判斷(字段 <> '')的時候,if語句竟然不會生效,很是納悶!

後來查詢相關資料發現:oracle建議您不要將空字串視為空字串

那麼具體是怎麼回事呢?

以下是乙個測試案例,測試oracle中空字串與null都被視為null

create table test1(id number, str varchar2(20));

insert into test1 values(1, 'like ''04''');

insert into test1 values(2, 'aa');

insert into test1 values(3, '');

insert into test1 values(4, null);

commit;

-- 查詢語句

select nvl(str, '我是空值') as res from test1;

查詢結果如下:

從查詢結果可以看出,在oracle中,null與空字串一樣。

直接使用test1表中的列值與空字串進行判斷

declare 

t_sql varchar2(100);

begin

select str into t_sql from test1 where id = 1;

if t_sql <> '' then

dbms_output.put_line('success!');

end if;

end;

按照常規邏輯來說,是會列印success的,但是上述pl/sql塊卻沒有列印結果,表明if語句並沒有生效

正確的寫法

declare 

t_sql varchar2(100);

begin

select str into t_sql from test1 where id = 1;

if nvl(t_sql, 'n') <> 'n' then

dbms_output.put_line('success!');

end if;

end;

列印結果:

oracle plsql中decode 函式用法

在oracle plsql的,decode函式有乙個if then else語句的功能。decode函式的語法是 decode expression search result search result default expression值進行比較。search 是對表達相比的價值。result...

oracle PL SQL 中變數繫結用法

從oracle的共享池的設計 和oracle推薦的 pl sql 寫法中,可以看出,變數繫結對效能有比較大的影響,那麼,如何在pl sql 中使用變數繫結呢?首先看看不使用變數繫結的用法 declare cursor cur temp id number is select from table a...

Oracle PL SQL 中如何使用Array

因為在pl sql中並沒有陣列,這是我查資料找的範例和自己寫的範例來解釋如何在pl sql中使用陣列。也許很多人已知道,不過就是讓不知道的朋友們了解一下吧。單維陣列 declare type emp ssn array is table of number index by binary integ...