In TypeORM, the Like operator (with the percent sign %) is used to search for a specified pattern in a column. This concise article walks you through 2 examples of selecting data with the Like operator in 2 different ways:
- Using the find() method
- Using a query builder
A quick note about the Like keyword and the percent sign:
- Like ‘kindacode.com%’: Finds any values that start with “kindacode.com”
- Like ‘%kindacode.com’: Finds any values that end with “kindacode.com”
- Like ‘%kindacode.com%’: Finds any values that contain “kindacode.com” (in any position)
We’ll work with a sample entity named Post (that stores blog posts in three columns: id, title, and body):
import { Entity, Column, PrimaryGeneratedColumn, Unique } from 'typeorm';
@Entity()
@Unique(['title'])
export class Post {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
body: string;
}
Using the find() method
This example selects all blog posts whose titles contain the word: ‘kindacode.com’.
import { Like } from 'typeorm';
/*...*/
const postRepository = myDataSource.getRepository(Post);
const posts = await postRepository.find({
where: { title: Like('%kindacode.com%') },
});
console.log(posts);
Using a query builder
This code snippet does the same thing as the preceding one, but in a distinguishable manner (you don’t have to import { Like } from ‘typeorm’):
const postRepository = myDataSource.getRepository(Post);
const posts = await postRepository
.createQueryBuilder('post')
.where('post.title LIKE :title', { title: '%kindacode.com%' })
.getMany();
console.log(posts);
That’s it. Further reading:
- TypeORM Upsert: Update If Exists, Create If Not Exists
- TypeORM: Find Rows Where Column Value is IN an Array
- How to Store JSON Object with TypeORM
- TypeORM: How to Limit Query Execution Time
- TypeORM: 2 Ways to Exclude a Column from being Selected
You can also check out our Javascript category page, TypeScript category page, Node.js category page, and React category page for the latest tutorials and examples.
Helpfull, thanks