PostgreSQL查询:获取course_id数组含指定值的学生姓名
PostgreSQL查询数组包含指定值的学生姓名
表结构
CREATE TABLE Student( name VARCHAR, course_id SMALLINT[] );
示例数据插入
INSERT INTO Student ( name, course_id ) VALUES ( 'john', ARRAY [1,2,3] );
实现查询的几种方法
方法1:使用数组包含运算符 @>
这是PostgreSQL中处理数组包含关系最直观的方式,运算符@>用于判断左侧数组是否包含右侧的数组元素:
SELECT name FROM Student WHERE course_id @> ARRAY[1]::SMALLINT[];
方法2:使用 ANY 关键字
ANY 会检查数组中是否存在任意元素等于指定值,写法更简洁:
SELECT name FROM Student WHERE 1 = ANY(course_id);
方法3:使用 array_position 函数
array_position 函数返回指定元素在数组中的索引位置,若元素不存在则返回NULL,通过判断结果不为NULL筛选目标记录:
SELECT name FROM Student WHERE array_position(course_id, 1) IS NOT NULL;
上述三种方法都能正确返回course_id数组包含1的学生姓名(如示例中的john)。
内容的提问来源于stack exchange,提问作者bluestacks454
相关产品推荐
相关产品推荐

