Skip to content

Pattern Matching Operators

Operators for string pattern matching and regular expressions.

like - Pattern Matching (Case-Sensitive)

Matches strings using SQL LIKE patterns.

typescript
// Starts with
{ where: { email: { like: '%@gmail.com' } } }
// SQL: WHERE "email" LIKE '%@gmail.com'

// Contains
{ where: { name: { like: '%john%' } } }
// SQL: WHERE "name" LIKE '%john%'

// Ends with
{ where: { filename: { like: '%.pdf' } } }
// SQL: WHERE "filename" LIKE '%.pdf'

// Single character wildcard
{ where: { code: { like: 'A_B' } } }  // Matches 'A1B', 'AXB', etc.
// SQL: WHERE "code" LIKE 'A_B'

Pattern Characters:

  • % - Matches any sequence of characters (including empty)
  • _ - Matches exactly one character

nlike - Not Like

typescript
{ where: { email: { nlike: '%@test.com' } } }
// SQL: WHERE "email" NOT LIKE '%@test.com'

ilike - Case-Insensitive Pattern Matching

PostgreSQL-specific case-insensitive LIKE.

typescript
{ where: { name: { ilike: '%john%' } } }
// SQL: WHERE "name" ILIKE '%john%'
// Matches: 'John', 'JOHN', 'john', 'JoHn'

{ where: { email: { ilike: '%@GMAIL.COM' } } }
// Matches: 'user@gmail.com', 'USER@Gmail.Com'

nilike - Not ILike

typescript
{ where: { email: { nilike: '%@example%' } } }
// SQL: WHERE NOT ("email" ILIKE '%@example%')

regexp - Regular Expression (Case-Sensitive)

PostgreSQL POSIX regex matching.

typescript
// Starts with letter
{ where: { code: { regexp: '^[A-Z]' } } }
// SQL: WHERE "code" ~ '^[A-Z]'

// Email pattern
{ where: { email: { regexp: '^[a-z]+@[a-z]+\\.[a-z]+$' } } }
// SQL: WHERE "email" ~ '^[a-z]+@[a-z]+\.[a-z]+$'

// Phone number pattern
{ where: { phone: { regexp: '^\\+?[0-9]{10,15}$' } } }

NOTE

Escape backslashes in TypeScript strings: \\d for regex \d.

iregexp - Case-Insensitive Regular Expression

typescript
{ where: { name: { iregexp: '^john' } } }
// SQL: WHERE "name" ~* '^john'
// Matches: 'John Doe', 'JOHN SMITH', 'john'

Summary

OperatorSQLCaseDescription
likeLIKESensitivePattern with wildcards
nlikeNOT LIKESensitiveNegative pattern
ilikeILIKEInsensitivePostgreSQL only
nilikeNOT ILIKEInsensitivePostgreSQL only
regexp~SensitivePOSIX regex match
iregexp~*InsensitivePOSIX regex match