pgsql-18 数组与范围类型
目录
18 - 数组与范围类型
1. 📖 概述
PostgreSQL原生支持数组和范围类型,这是其独特优势。
2. 📊 数组类型
-- 创建数组列
CREATE TABLE articles (
id SERIAL PRIMARY KEY,
title TEXT,
tags TEXT[],
ratings INTEGER[]
);
-- 插入数组
INSERT INTO articles (title, tags, ratings) VALUES
('PostgreSQL Tutorial', ARRAY['database', 'postgresql'], ARRAY[5, 4, 5]),
('SQL Guide', '{"sql", "tutorial"}', '{4, 5, 4}');
-- 数组操作
SELECT tags[1] FROM articles; -- 第一个元素
SELECT tags[1:2] FROM articles; -- 切片
SELECT array_length(tags, 1) FROM articles; -- 长度
SELECT 'database' = ANY(tags) FROM articles; -- 包含判断
-- 数组聚合
SELECT array_agg(tag) FROM unnest(ARRAY['a', 'b', 'c']) AS tag;
3. 📏 范围类型
-- 日期范围
CREATE TABLE room_bookings (
id SERIAL PRIMARY KEY,
room_id INTEGER,
booking_period DATERANGE
);
INSERT INTO room_bookings (room_id, booking_period) VALUES
(101, '[2024-01-15, 2024-01-20)');
-- 范围查询
SELECT * FROM room_bookings
WHERE booking_period @> DATE '2024-01-17'; -- 包含某日期
SELECT * FROM room_bookings
WHERE booking_period && '[2024-01-16, 2024-01-19)'::daterange; -- 重叠
xingliuhua