如何用“OTHER”替换数组中的空元素?

时间:2008-12-01 19:54:25

标签: perl arrays list

我的列表(@degree)是从SQL命令构建的。 SQL中的NVL命令不起作用,测试如下:

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是for循环中的计数器变量。基本上它通过并从表中获取唯一度数,最终创建("AFA", "AS", "AAS", "", "BS")。列表并不总是这么长,空元素并不总是在那个位置3。

有人可以帮忙吗?

我想要在for循环期间进行测试,或者在循环完成后对这个空元素进行测试,然后将其替换为单词“OTHER”。

谢谢 -Ken

3 个答案:

答案 0 :(得分:8)

首先,数组中的第i个元素是$ degree [$ i],而不是@degree [$ i]。其次,“==”用于数字比较 - 使用“eq”进行词汇比较。第三,尝试if (defined($degree[$i]))

答案 1 :(得分:6)

保罗所说的一切。而且,如果你需要一个例子:

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

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

print join ' ' => @degree;  # prints 'AFA AS AAS OTHER BS'

答案 2 :(得分:1)

如果数据库中实际为null,请尝试COALESCE

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

这是SQL标准的方法。