PrestoDB如何筛选varchar列值在指定数组中的行?
VARCHAR类型列实现IN数组筛选的方法
针对你的需求,有两种常用实现方式,均可筛选出Column1值在指定数组中的行:
方式一:标准SQL IN 子句(通用型)
这是所有主流关系型数据库都支持的标准写法,只需将数组中的每个字符串值用单引号包裹,通过IN关键字枚举即可:
WITH dataset AS ( SELECT * FROM ( VALUES (1, 'foo'), (2, 'bar') ) AS t (ID, Column1)) SELECT ID, Column1 FROM dataset WHERE Column1 IN ('bar', 'baz', 'zap');
执行后会返回ID=2, Column1='bar'的行,符合预期。
方式二:数据库特定数组函数(可选)
部分数据库(如PostgreSQL)支持直接使用数组匹配语法,写法更贴近你给出的伪代码形式,但仅适用于支持数组操作的数据库:
WITH dataset AS ( SELECT * FROM ( VALUES (1, 'foo'), (2, 'bar') ) AS t (ID, Column1)) SELECT ID, Column1 FROM dataset WHERE Column1 = ANY('{"bar", "baz", "zap"}'::text[]);
内容的提问来源于stack exchange,提问作者not link
相关产品推荐
相关产品推荐

