23

クエリの null 値の処理についての質問です。

たとえば、次のフィールドと値を持つ次のテーブルがあります

TABLEX
Column1
1        
2        
3      
4        
5      
---------
Column2
null
A
B
C
null

特定のプロシージャで variableY を渡しています。プロシージャ内にはこのようなカーソルがあります

CURSOR c_results IS
SELECT * FROM TABLEX where column2 = variableY

問題は、 variableY が null の場合、 variableY が null、A、B、または C のいずれかになる可能性があることです。

variableY が null の場合、比較が必要なため機能しないため、上記のカーソル/クエリを実行できません

CURSOR c_results IS
SELECT * FROM TABLEX where column2 IS NULL

nullまたは文字列変数に対応するカーソル/クエリを使用する必要があります。

私の質問が少し混乱している場合は申し訳ありません。私は物事を説明するのが得意ではありません。前もって感謝します。

4

8 に答える 8

9

Oracle の Ask Tom は次のように述べています。

where decode( col1, col2, 1, 0 ) = 0  -- finds differences

また

where decode( col1, col2, 1, 0 ) = 1  -- finds sameness - even if both NULL

NULL 列を等しいものとして安全に比較する

于 2015-10-21T13:45:01.143 に答える
0
WHERE variableY is null or column2 = variableY 

for example:
create table t_abc (
id number(19) not null,
name varchar(20)
);

insert into t_abc(id, name) values (1, 'name');
insert into t_abc(id, name) values (2, null);
commit;

select * from t_abc where null is null or name = null;
--get all records

select * from t_abc where 'name' is null or name = 'name';
--get one record with name = 'name'
于 2017-01-10T03:07:48.013 に答える