У меня есть таблица SQL, в которой один из столбцов имеет несколько значений, разделенных запятыми. Предполагается, что приведенный ниже код пройдет через все из них и вернет true, если в списке присутствует конкретное значение, однако, похоже, он работает только со значениями, отличными от первого значения в записи. Есть идеи о том, где я облажался? Запрос работает нормально при запуске его непосредственно в файле базы данных с использованием sqlite3, поэтому я уверен, что проблема в этой функции.
bool group_exists(char *group)
{
int retv;
char *param_1, *param_2;
bool exists = false;
sqlite3_stmt *p_stmn;
param_1 = malloc(BUFFER_SIZE);
param_2 = malloc(BUFFER_SIZE);
sprintf(param_1, "%s,%%", group);
sprintf(param_2, "%%,%s,%%", group);
sqlite3_prepare_v2(db, "SELECT groups FROM users WHERE groups LIKE ? OR groups LIKE ?", -1, &p_stmn, NULL);
sqlite3_bind_text(p_stmn, 1, param_1, -1, NULL);
sqlite3_bind_text(p_stmn, 1, param_2, -1, NULL);
retv = sqlite3_step(p_stmn);
if (retv == SQLITE_ROW) {
exists = true;
} else if (retv != SQLITE_DONE) {
retval_crash();
}
free(param_1);
free(param_2);
sqlite3_finalize(p_stmn);
return exists;
}