Я использую приведенный ниже код для переключения между поиском в записях базы данных, которые находятся выше или ниже введенного значения в определенном столбце.Математические операторы в SQL, не исключая значения «NA»
if (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Above"){
$operator = ">";
}
elseif (isset($_POST["abovebelow"]) && $_POST["abovebelow"] == "Below"){
$operator = "<";
}
elseif (!isset($_POST["abovebelow"])){
$operator = "LIKE";
$value = "%";
}
$result = $mysqli->prepare("SELECT t.column FROM table t WHERE t.value".$operator." (?);");
$result->bind_param($value);
$result->execute();
Для этого набора данных значение t.value равно -1,0,1 или NA. Когда я задаю запрос выше -1 или 0, значения NA также отображаются. Но когда я устанавливаю его ниже 1 или 0, значения NA не отображаются. Почему это? Есть ли что-то, что я могу добавить к запросу, чтобы предотвратить появление значений NA при выборе выше или ниже (но не тогда, когда ничего не выбрано)?
То, как я думаю о вышеуказанном вопросе, было бы: есть способ иметь переменное количество параметров в запросе? Я думаю, что если выбрано выше или ниже, тогда запрос может быть добавлен с помощью «AND t.value! = 'NA». Это также поможет установить флажок, позволяющий или не позволяющий значения «NA» по усмотрению пользователя с приведенными выше/ниже критериями.
Как хранятся значения «NA» в MySQL? Это 'NULL'? –
Если вам просто нужны разные запросы, вы можете переместить их внутри операторов if. – aron9forever
Значения NA сохраняются как «NA» не ноль. Я не могу поместить его внутри операторов if, потому что выше - упрощенная версия. У меня есть несколько операторов и значений, и я не хочу писать все возможные комбинации. – Steven