Я пытаюсь получить счетчик из базы данных SQL Server и дает 0 для полей с нулевыми значениями. Ниже я использую.Почему selectrow_array не работает с нулевыми значениями в where где
my $sql = q{SELECT count(*) from customer where first_name = ? and last_name = ?};
my @bind_values = ($first_name, $last_name);
my $count = $dbh->selectrow_array($sql, undef, @bind_values);
Это возвращает 0, если любое значение null в базе данных. Я знаю, что подготовка автоматически делает это is null
, если переданный параметр undef, но я не знаю, почему он не работает.
Так что это странное наблюдение. Когда я печатаю SQL со значениями в Тода для сервера SQL, он работает:
SELECT count(*) from customer where first_name = 'bob' and last_name is null
, но когда я пытаюсь тот же запрос и передать значения в параметре для first_name = боб и last_name {NULL}. это не работает.
SELECT count(*) from customer where first_name = ? and last_name = ?
Включить Отладка и посмотреть, если вы правы – Jens
Да, я пробовал отлаживать, но когда я вхожу в функцию подготовки DBI, она берет навсегда, а затмение перестает отвечать. –
«Я знаю, что подготовка автоматически делает ее« пустой »- нет, это не так. – melpomene