簡體   English   中英

按列中的第一個字符搜索 Typeorm PostgreSQL

[英]Search by first character in a column Typeorm PostgreSQL

我有一個公司表,我想在其中按首字母的名稱搜索公司。 在我的前端,我有一系列字母作為從 A 到 z 的復選框,並且我在請求正文中將選定的字母作為a,b,c傳遞。

如果我執行這個原始查詢,那么它正在工作,但是我如何在 typeorm querybuilder 中編寫它

select * FROM companies WHERE lower(substring(name from 1 for 1)) = ANY (ARRAY['m'])

我已經嘗試過以下查詢 -

public async getCompanies(
   pageOptionsQuery: CompanyPageOptionsDto,
): Promise<Company[]> {
        const queryBuilder = this._companyRepository
            .createQueryBuilder()
            .select('*');

        if (!!pageOptionsQuery.filter_by) {
            //pageOptionsQuery.filter_by is like series of selected letters
            //a,b,c

            const filters = pageOptionsQuery.filter_by.split(',');

            queryBuilder.where('LOWER(name) IN (:...filters )', {
                filters: filters,
            });
        }

        return queryBuilder.getRawMany();
}

這就是我想出的-

public async getCompanies(
   pageOptionsQuery: CompanyPageOptionsDto,
): Promise<Company[]> {
        const queryBuilder = this._companyRepository
            .createQueryBuilder()
            .select('*');

        if (!!pageOptionsQuery.filter_by) {
            //pageOptionsQuery.filter_by is like series of selected letters
            //a,b,c

            const filters = pageOptionsQuery.filter_by.split(',');

            queryBuilder.where(
                'LOWER(SUBSTRING(name, 1, 1)) IN (:...filters)',
                {
                    filters,
                },
            );
        }

        return queryBuilder.getRawMany();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM