分享

求助 :hive sql 的 case when如果对应的when条件都不满足时报错!

wy851206 发表于 2013-10-16 13:39:49 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 9059
select view_date,
            client_page_id,
            CASE WHEN (SUBSTRING(Client_Page_ID,1,8) = 'PRODUCT:'
                       OR SUBSTRING(Client_Page_ID,1,15) = 'MOBILE:PRODUCT:'
                       OR SUBSTRING(Client_Page_ID,1,16) = 'MOBILE2:PRODUCT:'
                       OR SUBSTRING(Client_Page_ID,1,16) = 'IPPRODUCTDETAIL:'
                       OR SUBSTRING(Client_Page_ID,1,16) = 'ADPRODUCTDETAIL:')
                      AND SPLIT(REVERSE(Client_Page_Id),'\\\(')[0] IS NOT NULL
                    THEN REVERSE(SPLIT(SPLIT(REVERSE(Client_Page_Id),'\\\(')[0],'\\\)')[1])
                 ELSE ''
          END AS Client_Product_id
       FROM  PageView A
       --where Client_Page_ID like '%PRODUCT%';
如上所示 ,我加了where条件后 就不会报错,但是不加就立马出问题了 。。。请教高手帮忙!!
              
               
                    Hive
                    SQL
               

已有(1)人评论

跳转到指定楼层
wy851206 发表于 2013-10-16 13:40:26

            已经搞定了。。substr需要保证length,截取的长度不能超出字段长度 ,否则就报错。。。这点好讨厌!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条