Skip to main content

Filter

Filters allow only rows that meet specific criteria to be returned.

Filters can be used for select(), update(), upsert(), and delete() queries.

eq

Only rows whose column values equal the specified value are matched.

To check whether a column value is NULL, use .is() instead of eq.

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valueanyRequiredValue for filtering

Code Example

// Query all records from the articles table where title equals "Tencent Cloud Development"
const { data, error } = await db
.from("articles")
.select()
.eq("title", "Tencent Cloud Development");

neq

Only rows whose column values do not equal the specified value are matched.

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valueanyRequiredValue for filtering

Code Example

// Query all records from the articles table where title is not equal to "Tencent Cloud Development".
const { data, error } = await db
.from("articles")
.select()
.neq("title", "Tencent Cloud Development");

gt

Only rows whose column values are greater than the specified value are matched.

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valueanyRequiredValue for filtering

Code Example

// Query all records from the articles table where id > 2
const { data, error } = await db.from("articles").select().gt("id", 2);

gte

Only rows whose column values are greater than or equal to the specified value are matched.

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valueanyRequiredValue for filtering

Code Example

// Query all records from the articles table where id >= 2
const { data, error } = await db.from("articles").select().gte("id", 2);

lt

Only rows whose column values are less than the specified value are matched.

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valueanyRequiredValue for filtering

Code Example

// Query all records from the articles table where id < 2
const { data, error } = await db.from("articles").select().lt("id", 2);

lte

Only rows whose column values are less than or equal to the specified value are matched.

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valueanyRequiredValue for filtering

Code Example

// Query all records from the articles table where id <= 2
const { data, error } = await db.from("articles").select().lte("id", 2);

like

Only match rows where column values match a specific pattern (case sensitivity is constrained by validation rules).

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
patternstringRequiredPattern to match

Code Example

// Query all records from the articles table where title contains "cloudbase"
const { data, error } = await db
.from("articles")
.select()
.like("title", "%cloudbase%");

is

Only rows whose column values equal the specified value are matched.

For non-Boolean columns, it is primarily used to check whether column values are NULL;

For Boolean columns, it can also be set to true or false, behaving the same as .eq().

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valueObjectRequiredValue for filtering

Code Example

// Query all records from the articles table where title is null
const { data, error } = await db.from("articles").select().is("title", null);

in

Only rows whose column values are contained in the specified array are matched.

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
valuesArrayRequiredArray of values for filtering

Code Example

// Query all records from the articles table where title is in the specified array ["Tencent Cloud Development", "Cloud Development"]
const { data, error } = await db
.from("articles")
.select()
.in("title", ["Tencent Cloud Development", "Cloud Development"]);

match

Only matches rows where each column in the query key equals its associated value, equivalent to a shorthand form of multiple .eq().

Parameters

ParameterTypeRequiredDescription
queryRecord<ColumnName, Row['ColumnName']>RequiredFilter object mapping column names to filter values

Code Example

// Query all records from the articles table where id equals 2 and title equals "Tencent Cloud Development"
const { data, error } = await db
.from("articles")
.select()
.match({ id: 2, title: "Tencent Cloud Development" });

not

Matches only rows that do not satisfy the filter condition.

Unlike most filters, operators and values are used as is, must follow MySQL syntax, and must be properly escaped.

not() expects the raw MySQL syntax as the filter value.

.not('id', 'in', '(5,6,7)')  // Use `()` for `in` filters
.not('name', 'like', '%test%') // Performs fuzzy matching using `not like`

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
operatorstringRequiredFilter operator to negate, follows MySQL syntax
valueanyRequiredFilter value, follows MySQL syntax

Code Example

// Query all records from the articles table where title is not null
const { data, error } = await db
.from("articles")
.select()
.not("title", "is", null);

or

Matches rows that satisfy at least one filter condition.

Unlike most filters, filters are used as is, must follow MySQL syntax, and must be properly escaped.

Currently, it is not possible to perform .or() filtering across multiple tables.

The .or() method expects the raw MySQL syntax as the filter name and value.

.or('id.in.(5,6,7), name.like.%test%')  // Uses `()` for `in` filters and `%` for fuzzy matching with `like`
.or('id.in.(5,6,7), name.not.like.%test%') // Use `not.like` for inverse fuzzy matching

Parameters

ParameterTypeRequiredDescription
filtersstringRequiredFilters to use, follows MySQL syntax
optionsobjectRequiredNamed parameters
options.referencedTablestringOptionalSet to filter the referenced table rather than the parent table

Code Example

// Query all records from the articles table where id equals 2 or title equals "Tencent Cloud Development"
const { data, error } = await db
.from("articles")
.select()
.or(`id.eq.2,title.eq.Tencent Cloud Development`);

filter

Only rows that meet the filter conditions are matched; this is an "escape hatch" and specific filter methods should be used whenever possible.

Unlike most filters, operators and values are used as is, must follow MySQL syntax, and must be properly escaped.

The filter() method expects the raw MySQL syntax as the filter value.

.filter('id', 'in', '(5,6,7)')  // Use `()` for `in` filters
.filter('name', 'like', '%test%') // Performs fuzzy matching using `like`
.filter('name', 'not.like', '%test%') // Performs reverse fuzzy matching using `not.like`

Parameters

ParameterTypeRequiredDescription
columnstringRequiredColumn to filter
operatorstringRequiredFilter operator, follows MySQL syntax
valueanyRequiredFilter value, follows MySQL syntax

Code Example

// Query records where title is in the specified value list
// Query all records from the articles table where title is in the specified value list ["Tencent Cloud Development", "Cloud Development"]
const { data, error } = await db
.from("articles")
.select()
.filter("title", "in", "(Tencent Cloud Development, Cloud Development)");

// Filter on the reference table
// Query all records from the articles table where the associated categories.name equals "Technology".
const { data, error } = await db
.from("articles")
.select()
.filter("categories.name", "eq", "Technology");