Я хочу использовать переменную в предложении WHERE в SQL-запросе, не получая при этом никаких результатов, а также никаких ошибок

#sql #postgresql #where-clause

Вопрос:

если я удалю параметр «столбец» из функции и жестко закодирую имя столбца в предложении where, этот запрос будет работать.

 static async findByColumn(column, searchTerm) {
    const term = `%${searchTerm}%`;
    const { rows } = await pool.query(
      `SELECT * FROM characters
        WHERE $1
        ILIKE $2`,
      [column, term]
    );
    if(!rows[0]) return null;
    else return rows.map(character => new Character(character));
  }

 

Комментарии:

1. Вы не можете передавать имена столбцов или таблиц в качестве параметров — независимо от вашего языка программирования. Вам необходимо динамически построить SQL с использованием конкатенации строк перед его запуском.

2. хорошо, круто, спасибо! Да, в итоге я просто вставил его в качестве шаблона литерала ${столбец}, и это сработало!