如何在Presto SQL中筛选列特定值?排除指定列值方法咨询
在Presto SQL中筛选列特定值并排除指定内容的方法
当然可以实现这个需求!下面给你两种简单直接的方案,你可以根据自己的表结构和实际场景选择:
方案一:使用IN子句直接锁定目标值
这是最直观高效的方式,直接限定stall_type列只能是你需要的三个值,自动排除所有其他值(包括(Non-mall)):
SELECT * FROM your_table_name -- 替换成你的实际表名 WHERE stall_type IN ('High End', 'Mid End', 'Low End');
说明
IN子句会精确匹配列表中的字符串值,只要stall_type是这三个值之一就会被保留,其他所有值(比如(Non-mall))都会被过滤掉。- 如果你的表中
stall_type只有这四个可能值(High End、Mid End、Low End、(Non-mall)),这个方案完全够用。
方案二:结合NOT明确排除特定值(提升代码可读性)
如果你的表中还有其他stall_type值,或者想让代码逻辑更清晰,可以在锁定目标值的同时明确写出排除条件:
SELECT * FROM your_table_name WHERE stall_type IN ('High End', 'Mid End', 'Low End') AND stall_type != '(Non-mall)';
其实方案一已经包含了排除(Non-mall)的逻辑,但这样写能让团队协作时的代码可读性更高。
额外小提示:处理大小写不统一的情况
如果stall_type列的值大小写混乱(比如有的是high end,有的是High End),可以用LOWER()函数统一转换后再匹配,避免漏选:
SELECT * FROM your_table_name WHERE LOWER(stall_type) IN ('high end', 'mid end', 'low end');
内容的提问来源于stack exchange,提问作者adelle
相关产品推荐
相关产品推荐

