2016-05-18 18 views
0

私はPostgreSQL 9.5で以下のようにテーブルを作成しました。データを追加しました。しかし、大文字と小文字を区別しない検索でデータを照会しようとすると、!〜*のようにNULL値の行も削除されます。ヌルと野菜でフルーツではないすべてのカテゴリを返すクエリを実行するにはどうすればよいですか?PostgreSQLの文字列によるクエリは、NULLがある場合でも値をフィルタリングします。

CREATE TABLE temp 
(
    category character varying, 
    item character varying 
); 

INSERT INTO temp VALUES('Fruits', 'apple'); 
INSERT INTO temp VALUES('FRUITS', 'applE'); 
INSERT INTO temp(item) VALUES('Apple'); 
INSERT INTO temp(item) VALUES('BANANA'); 
INSERT INTO temp VALUES('Vegetables', 'Cabbage'); 

クエリ

Select * from temp where category !~* 'fruits' 

出力

category item 
-------- -------- 
Vegetables Cabbage 

答えて

1

ヌルに対処するには、is distinct from使用することができます。

Select * 
from temp 
where lower(category) is distinct from 'fruits' 

か、正規表現たい場合:私は巣にしようとした、および/またはそれらのヌルが消えて、クエリに参加する場合は、しかし、

Select * 
from temp 
where coalesce(category, '') !~* 'fruits' 
+0

Select * from temp where category !~* 'fruits' or category is null; 

が代わりに何か他のものとしてnull扱いを。 (! セレクト* カテゴリ〜*「果物」 やカテゴリが nullで一時 から)*を選択し、「T」 「カテゴリ」〜*「野菜」 – codeBarer

+0

しかしもしI:例えばこの場合は!そして、それが動作合体ん。 ' "T" 合体( "カテゴリ"、( ') '!)〜*' 合体(カテゴリ' 果物一時 から * セレクト)' SELECT * FROM〜! * '野菜' – codeBarer

関連する問題