TypeORM select с нечувствительностью к регистру - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь создать построитель запросов TypeORM, который подключается к postgresql БД, чтобы получить все уникальные имена в БД. Мой запрос выглядит так:

names = await this._context.manager
        .getRepository(Names)
        .createQueryBuilder('names')
        .select('DISTINCT ON (names.name) names.name')
        .orderBy('names.name', 'ASC')
        .getRawMany();

Сейчас этот запрос извлекает все имена в БД, но он чувствителен к регистру, поэтому он не может отсортировать дубликаты, такие как «Джейн Доу» из «Джейн Доу». До сих пор я пытался сделать разные буквы в верхнем и нижнем регистре следующим образом: .select('DISTINCT ON LOWER(names.name) names.name'), но это не сработало. Я также нашел функцию .distinctOn (), но я не мог сделать ее нечувствительной к регистру.

Я новичок в typeORM, поэтому я немного не понимаю, где go отсюда , есть идеи?

Я работаю в Node.JS над postgresql БД, если это имеет значение.

1 Ответ

1 голос
/ 14 июля 2020

Тема этого выпуска - postgres, а не typeORM. Аналогичный вопрос: Удаление повторяющихся строк в Postgres.

В вашем случае правильный синтаксис:

names = await this._context.manager
        .getRepository(Names)
        .createQueryBuilder('names')
        .select('DISTINCT ON (LOWER(names.name)) names.name')
        .orderBy('LOWER(names.name)', 'ASC')
        .getRawMany();
 
...