Я заметил странное поведение и надеялся, что один из экспертов сможет объяснить разницу.Мой пользовательский интерфейс требует уникального изображения перед тем, как представить его пользователю для выполнения его задачи.Я храню контрольные суммы в базе данных и запрашиваю их для уникальных значений.Я заметил, что моя логика «переворачивается» в зависимости от того, использую ли я стандартный запрос SELECT против SELECT COUNT.Я выделил его в этой строке кода, но я не понимаю, почему.
SELECT запись ОТ таблица ГДЕ контрольная сумма = что-то
//This code works correctly (true / false)
Object result = command.ExecuteScalar();
bool checksumExists = (result == null ? false : true);
//Returns TRUE no matter what
Object result = command.ExecuteScalar();
bool checksumExists = (result == DBNull.value ? false : true);
Я перешел на следующий SQL для производительности с большой таблицей, и моя логика «перевернулась»
SELECT COUNT ( record ) FROM table WHERE контрольная сумма = что-то
//Now this code always returns TRUE
Object result = command.ExecuteScalar();
bool checksumExists = (result == null ? false : true);
//Now this is the solution
Object result = command.ExecuteScalar();
bool checksumExists = (Convert.ToInt32(result) < 1 ? false : true);
Означает ли оператор COUNT, что он всегда будет возвращать число, даже если строки не найдены?