不区分大小写的 TypeORM select
TypeORM select with case insensitive distinct
我正在尝试创建一个连接到 postgresql 数据库的 TypeORM 查询生成器,以获取数据库中的所有唯一名称。我的查询如下所示
names = await this._context.manager
.getRepository(Names)
.createQueryBuilder('names')
.select('DISTINCT ON (names.name) names.name')
.orderBy('names.name', 'ASC')
.getRawMany();
现在此查询获取数据库中的所有名称,但它区分大小写,因此它无法从 'jane doe' 中找出重复项,例如 'Jane Doe'。到目前为止,我已经尝试像这样制作独特的 upper/lowercase :
.select('DISTINCT ON LOWER(names.name) names.name')
但这不起作用。我还找到了一个 .distinctOn() 函数,但我也无法使该函数不区分大小写。
我是 typeORM 的新手,所以我有点不知所措,有什么想法吗?
我正在 Node.JS 开发 postgresql 数据库,如果这会有所作为的话。
本期主题是postgres而非typeORM。
类似问题:Eliminating Duplicate rows in Postgres.
在您的情况下,正确的语法是:
names = await this._context.manager
.getRepository(Names)
.createQueryBuilder('names')
.select('DISTINCT ON (LOWER(names.name)) names.name')
.orderBy('LOWER(names.name)', 'ASC')
.getRawMany();
对于存储库,我以这种方式使用 ILIKE
运算符以 postgres 作为数据库进行了不区分大小写的搜索
const planning_groups: any[] =
await this.planningGroupRepository.find({
where: `"tenant_id" ILIKE '${tenantId}'`
});
其中 tenant_id 是列名称,tenantId
是要搜索的关键字。
我正在尝试创建一个连接到 postgresql 数据库的 TypeORM 查询生成器,以获取数据库中的所有唯一名称。我的查询如下所示
names = await this._context.manager
.getRepository(Names)
.createQueryBuilder('names')
.select('DISTINCT ON (names.name) names.name')
.orderBy('names.name', 'ASC')
.getRawMany();
现在此查询获取数据库中的所有名称,但它区分大小写,因此它无法从 'jane doe' 中找出重复项,例如 'Jane Doe'。到目前为止,我已经尝试像这样制作独特的 upper/lowercase :
.select('DISTINCT ON LOWER(names.name) names.name')
但这不起作用。我还找到了一个 .distinctOn() 函数,但我也无法使该函数不区分大小写。
我是 typeORM 的新手,所以我有点不知所措,有什么想法吗?
我正在 Node.JS 开发 postgresql 数据库,如果这会有所作为的话。
本期主题是postgres而非typeORM。 类似问题:Eliminating Duplicate rows in Postgres.
在您的情况下,正确的语法是:
names = await this._context.manager
.getRepository(Names)
.createQueryBuilder('names')
.select('DISTINCT ON (LOWER(names.name)) names.name')
.orderBy('LOWER(names.name)', 'ASC')
.getRawMany();
对于存储库,我以这种方式使用 ILIKE
运算符以 postgres 作为数据库进行了不区分大小写的搜索
const planning_groups: any[] =
await this.planningGroupRepository.find({
where: `"tenant_id" ILIKE '${tenantId}'`
});
其中 tenant_id 是列名称,tenantId
是要搜索的关键字。