MySQL WHERE IN условие с функцией IFNULL

У меня проблема с функцией IFNULL, используемой в условии WHERE IN:

SELECT provider_id FROM provider WHERE provider_id IN ( IFNULL("131, 132",'999') )

Я перепробовал все варианты цитирования, такие как:

 SELECT provider_id FROM provider WHERE provider_id IN ( IFNULL("'131', '132'", '999') )

Но не может сделать это с помощью PHP.

Не могли бы вы предложить, как правильно отформатировать многозначный параметр в функции IFNULL?

0

Решение

IFNULL не берет «многозначный параметрMsgstr «Нет способа правильно отформатировать его.

IFNULL Функция принимает только два аргумента. Если первый аргумент оценивается как NULL, функция возвращает второй аргумент. В противном случае он возвращает первое выражение.

То есть выражение SQL

  IFNULL(foo,'bar')

эквивалентно

  CASE WHEN foo IS NULL THEN 'bar' ELSE foo END

Это:

SELECT IFNULL("131, 132",'999')

возвращает:

IFNULL("131, 132",'999')
--------------------------
131, 132

И это:

provider_id IN ( IFNULL("131, 132",'999') )

эквивалентно:

provider_id = '131, 132'

Непонятно, чего вы пытаетесь достичь или почему IFNULL Функция включена в утверждение.

Сделайте шаг назад и четко сформулируйте проблему, которую вы пытаетесь решить.

0

Другие решения

Прежде всего ваш вопрос использует IFNULL на ненулевые значения, которые не имеют смысла.

во-вторых IFNULL вернул бы одно значение, нет необходимости делать provider_id IN (...) для одного значения, так как оно будет таким же, как provided_id=...

И, наконец, если вы хотите проверить, является ли переменная PHP нулевой, то сделайте это с PHP.

//$pdo_test
$query = "SELECT provider_id FROM provider";
if ($pdo_test !== null) {
$query = " WHERE provider_id=?"}

Затем вы можете сделать запрос:

$stmt = $pdo->prepare($query);
if ($pdo_test !== null) {
$stmt->bindParam(1,$pdo_test,PDO::PARAM_INT); //Looks like an int, but change if its something else
}
//Code like  $stmt->fetch() and processing goes here
0

SELECT provider_id FROM provider WHERE provider_id IN ('131', '132', '999')

Просто попробуйте приведенный выше код.

Вам не нужна дополнительная цитата или что-то еще, чтобы выполнить ваш запрос.

0
По вопросам рекламы [email protected]