2008-12-01 4 views
1

Мой список (@degree) построен из команды SQL. Команда NVL в SQL не не работает, ни тесты, такие как:Как заменить пустые элементы в массиве «OTHER»?

if (@degree[$i] == "") 
if (@degree[$i] == " ") 
if (@degree[$i] == '') 
if (@degree[$i] == -1) 
if (@degree[$i] == 0) 
if (@degree[$i] ==()) 
if (@degree[$i] == undef) 

$ I является переменной счетчика в цикле. В основном он проходит и захватывает уникальные градусы из таблицы и заканчивается созданием ("AFA", "AS", "AAS", "", "BS"). Список не всегда такой длинный, и пустой элемент не всегда находится в этом положении 3.

Может ли кто-нибудь помочь?

Я хочу либо проверить во время цикла for, либо после того, как цикл завершится для этого пустого элемента, а затем замените его словом «OTHER».

Спасибо за все,

Кен

ответ

8

Прежде всего, г-й элемент в массиве $ степени [$ я], не @degree [$ я]. Во-вторых, «==» - для численных сравнений - используйте «eq» для лексических сравнений. В-третьих, попробуйте if (defined($degree[$i]))

+0

спасибо ... я я знаю его $ степени [$ я], я был просто в спешке ха-ха и эк работал отлично ... Я просто изучение perl на моем собственном и я не smog найти этот ответ везде так большое спасибо – CheeseConQueso 2008-12-01 20:07:25

1

Если его фактически нулевой в базе данных, попробуйте COALESCE

SELECT COALESCE(column, 'no value') AS column FROM whatever ... 

Это SQL-стандартный способ сделать это.

5

Все, что Павел сказал. И, если вам нужен пример:

my @degree = ('AFA', 'AS', 'AAS', '', 'BS'); 

$_ ||= 'OTHER' for @degree; 

print join ' ' => @degree; # prints 'AFA AS AAS OTHER BS' 
Смежные вопросы