Hive中CASE WHEN语句如何同时设置两个LIKE匹配条件
错误原因
你原来的写法不符合Hive SQL语法要求:AND连接的必须是两个返回布尔值的判断条件,直接在AND后加字符串常量'%MOBILE%'是无效的,每个关键词匹配都需要写完整的[字段名] LIKE [匹配规则]结构。
另外Hive默认LIKE是大小写敏感的,如果需要匹配示例中首字母大写的Iphone、Mobile这类写法,建议用大小写不敏感的匹配函数ILIKE。
正确写法
大小写敏感版本
CASE WHEN `column` LIKE '%IPHONE%' AND `column` LIKE '%MOBILE%' THEN 'IOS' WHEN `column` LIKE '%ANDROID%' AND `column` LIKE '%LINUX%' THEN 'ANDROID' WHEN `column` LIKE '%LINUX%' THEN 'DESKTOP' ELSE 'NA' END
大小写不敏感版本(适配各种大小写拼写场景)
CASE WHEN `column` ILIKE '%IPHONE%' AND `column` ILIKE '%MOBILE%' THEN 'IOS' WHEN `column` ILIKE '%ANDROID%' AND `column` ILIKE '%LINUX%' THEN 'ANDROID' WHEN `column` ILIKE '%LINUX%' THEN 'DESKTOP' ELSE 'NA' END
效果验证
你提供的测试数据Iphone; Mobile; Mac OS X使用大小写不敏感版本的写法,会命中第一个分支,返回IOS,符合匹配要求。
内容的提问来源于stack exchange,提问作者Felipe
相关产品推荐
相关产品推荐

