Hive where int/string <> int/int/string <> string cast类型转化/where自动过滤掉NULL,保留‘‘

Dear 丶 2021-09-23 05:00 376阅读 0赞

1 int/string <> int,会把string cast成 int ,不能转化为int的字符串都会cast成NULL,<>int也会把NULL值的记录过滤掉,’’不是NULL故’’保留在结果中

  1. select cast('' as int) --res7,结果是NULL
  2. select cast(' ' as int) --res8,结果是NULL
  3. select cast(null as int) -- 结果是NULL
  4. select cast('1' as int) --结果是1
  5. select cast('' as string) --结果是''
  6. select *
  7. from (
  8. select 1 as c1
  9. union all
  10. select 2 as c1
  11. union all
  12. select '34' as c1
  13. union all
  14. select '3ab4' as c1
  15. union all
  16. select 'ab' as c1
  17. union all
  18. select '' as c1
  19. union all
  20. select ' ' as c1
  21. union all
  22. select null as c1
  23. ) t1 where c1 <> 1 ; --res152行记录分别是234,不能转化为int的字符串都会castNULL,<>1会把NULL过滤掉

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAwMDIxODQ_size_16_color_FFFFFF_t_70

  1. select *
  2. from (
  3. select '1' as c1
  4. union all
  5. select '2' as c1
  6. union all
  7. select '' as c1
  8. union all
  9. select ' ' as c1
  10. union all
  11. select null as c1
  12. ) t1 where c1 <> 1 ; --res10,1行记录是2

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAwMDIxODQ_size_16_color_FFFFFF_t_70 1

  1. select *
  2. from (
  3. select 1 as c1
  4. union all
  5. select 2 as c1
  6. union all
  7. select '' as c1
  8. union all
  9. select ' ' as c1
  10. union all
  11. select null as c1
  12. ) t1 where c1 <> 1 ; --res5,1行记录是2

" class="reference-link">watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAwMDIxODQ_size_16_color_FFFFFF_t_70 2

#

2 int/string <> string,会把int cast成string,<>string也会把NULL值的记录过滤掉,’’不是NULL故’’保留在结果中

  1. select *
  2. from (
  3. select 1 as c1
  4. union all
  5. select 2 as c1
  6. union all
  7. select '34' as c1
  8. union all
  9. select '3ab4' as c1
  10. union all
  11. select 'ab' as c1
  12. union all
  13. select '' as c1
  14. union all
  15. select ' ' as c1
  16. union all
  17. select null as c1
  18. ) t1 where c1 <> '1' -- res16,结果共6行,分别是2343ab4,ab,'',' ',NULL值被过滤掉

" class="reference-link">watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAwMDIxODQ_size_16_color_FFFFFF_t_70 3

  1. select *
  2. from (
  3. select 1 as c1
  4. union all
  5. select 2 as c1
  6. union all
  7. select '' as c1
  8. union all
  9. select ' ' as c1
  10. union all
  11. select null as c1
  12. ) t1 where c1 <> '1' ; --res9,3行记录,分别是2'',' '

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAwMDIxODQ_size_16_color_FFFFFF_t_70 4

以上Hive2.0.0

发表评论

表情:
评论列表 (有 0 条评论,376人围观)

还没有评论,来说两句吧...

相关阅读