过滤器
过滤器允许只返回符合特定条件的行。
过滤器可以用于 select()、update()、upsert() 和 delete() 查询。
eq
仅匹配列值等于指定值的行。
要检查列值是否为 NULL,应该使用 .is() 而不是 eq。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | any | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 title 等于 "腾讯云开发" 的记录
const { data, error } = await db
.from("articles")
.select()
.eq("title", "腾讯云开发");
neq
仅匹配列值不等于指定值的行。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | any | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 title 不等于 "腾讯云开发" 的记录
const { data, error } = await db
.from("articles")
.select()
.neq("title", "腾讯云开发");
gt
仅匹配列值大于指定值的行。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | any | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 id 大于 2 的记录
const { data, error } = await db.from("articles").select().gt("id", 2);
gte
仅匹配列值大于或等于指定值的行。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | any | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 id 大于或等于 2 的记录
const { data, error } = await db.from("articles").select().gte("id", 2);
lt
仅匹配列值小于指定值的行。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | any | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 id 小于 2 的记录
const { data, error } = await db.from("articles").select().lt("id", 2);
lte
仅匹配列值小于或等于指定值的行。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | any | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 id 小于或等于 2 的记录
const { data, error } = await db.from("articles").select().lte("id", 2);
like
仅匹配列值符合特定模式的行(是否区分大小写受校验规则约束)。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| pattern | string | 必需 | 要匹配的模式 |
代码示例
// 从 articles 表中查询所有 title 包含 "cloudbase" 的记录
const { data, error } = await db
.from("articles")
.select()
.like("title", "%cloudbase%");
ilike
仅匹配列值符合特定模式的行(不区分大小写,不受校验规则约束)。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| pattern | string | 必需 | 要匹配的模式 |
代码示例
// 从 articles 表中查询所有 title 包含 "cloudbase" 的记录(不区分大小写)
const { data, error } = await db
.from("articles")
.select()
.ilike("title", "%cloudbase%");
is
仅匹配列值等于指定值的行。
对于非布尔列,主要用于检查列值是否为 NULL;
对于布尔列,也可以设置为 true 或 false,行为与 .eq() 相同。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | Object | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 title 为 null 的记录
const { data, error } = await db.from("articles").select().is("title", null);
in
仅匹配列值包含在指定数组中的行。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| values | Array | 必需 | 用于过滤的值数组 |
代码示例
// 从 articles 表中查询所有 title 在指定数组 ["腾讯云开发", "云开发"] 中的记录
const { data, error } = await db
.from("articles")
.select()
.in("title", ["腾讯云开发", "云开发"]);
contains
仅匹配列值包含指定值的行。
适用于数组列、范围列和 JSONB 列。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | Array|Object | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 tags 包含 ["技术", "云计算"] 的记录(数组列)
const { data, error } = await db
.from("articles")
.select()
.contains("tags", ["技术", "云计算"]);
// 从 articles 表中查询所有 metadata 包含指定 JSON 对象的记录(JSONB 列)
const { data, error } = await db
.from("articles")
.select()
.contains("metadata", { category: "技术" });
containedBy
仅匹配列值被指定值包含的行。
适用于数组列、范围列和 JSONB 列。
参数
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| column | string | 必需 | 要过滤的列 |
| value | Array|Object | 必需 | 用于过滤的值 |
代码示例
// 从 articles 表中查询所有 tags 被 ["技术", "云计算", "前端", "后端"] 包含的记录
const { data, error } = await db
.from("articles")
.select()
.containedBy("tags", ["技术", "云计算", "前端", "后端"]);