天天看點

hive 中的 關系運算 不等于

         文法:A=B

         操作類型:所有基本類型

         描述: 如果表達式A與表達式B相等,則為TRUE;否則為FALSE

         舉例:

         hive>select 1 from lxw_dual where 1=1;

         1

         文法: A <> B

操作類型: 所有基本類型

描述: 如果表達式A為NULL,或者表達式B為NULL,傳回NULL;如果表達式A與表達式B不相等,則為TRUE;否則為FALSE

舉例:

hive> select1 from lxw_dual where 1 <> 2;

1

注意:

由于在通常得SQL寫法中不等于也可以這樣寫 != 。但在hive中,當一個string類型和int類型比較的時候會出現問題。

數字和數字類型用 可以用 != 

比較:

帶引号的數字和數字類型 可以用!= 比較: 

帶引号的數字和帶引号數字類型 可以用 != 比較:

字元串和數字類型 不可以用 !=比較:

字元串和數字類型 不可以用 <> 比較:

總之,用不等于比較的時候兩者的字段類型盡量保持一緻。

         文法: A < B

描述: 如果表達式A為NULL,或者表達式B為NULL,傳回NULL;如果表達式A小于表達式B,則為TRUE;否則為FALSE

hive> select1 from lxw_dual where 1 < 2;

文法: A <= B

描述: 如果表達式A為NULL,或者表達式B為NULL,傳回NULL;如果表達式A小于或者等于表達式B,則為TRUE;否則為FALSE

hive> select1 from lxw_dual where 1 <= 1;

文法: A > B

描述: 如果表達式A為NULL,或者表達式B為NULL,傳回NULL;如果表達式A大于表達式B,則為TRUE;否則為FALSE

hive> select1 from lxw_dual where 2 > 1;

文法: A >= B

描述: 如果表達式A為NULL,或者表達式B為NULL,傳回NULL;如果表達式A大于或者等于表達式B,則為TRUE;否則為FALSE

hive> select1 from lxw_dual where 1 >= 1;

注意:String的比較要注意(常用的時間比較可以先to_date之後再比較)

hive> select* from lxw_dual;

OK

201111120900:00:00     2011111209

hive> selecta,b,a<b,a>b,a=b from lxw_dual;

201111120900:00:00     2011111209      false  true    false

文法: A IS NULL

操作類型: 所有類型

描述: 如果表達式A的值為NULL,則為TRUE;否則為FALSE

hive> select1 from lxw_dual where null is null;

文法: A IS NOT NULL

描述: 如果表達式A的值為NULL,則為FALSE;否則為TRUE

hive> select1 from lxw_dual where 1 is not null;

文法: A LIKE B

操作類型: strings

描述: 如果字元串A或者字元串B為NULL,則傳回NULL;如果字元串A符合表達式B   的正則文法,則為TRUE;否則為FALSE。B中字元”_”表示任意單個字元,而字元”%”表示任意數量的字元。

hive> select1 from lxw_dual where 'football' like 'foot%';

hive> select1 from lxw_dual where 'football' like 'foot____';

注意:否定比較時候用NOT ALIKE B

hive> select1 from lxw_dual where NOT 'football' like 'fff%';

文法: A RLIKE B

描述: 如果字元串A或者字元串B為NULL,則傳回NULL;如果字元串A符合JAVA正規表達式B的正則文法,則為TRUE;否則為FALSE。

hive> select1 from lxw_dual where 'footbar’ rlike '^f.*r$’;

注意:判斷一個字元串是否全為數字:

hive>select 1from lxw_dual where '123456' rlike '^\\d+$';

hive> select1 from lxw_dual where '123456aa' rlike '^\\d+$';

文法: A REGEXP B

描述: 功能與RLIKE相同

hive> select1 from lxw_dual where 'footbar' REGEXP '^f.*r$';

本文轉自 yntmdr 51CTO部落格,原文連結:http://blog.51cto.com/yntmdr/1828092,如需轉載請自行聯系原作者