我的列表(@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
答案 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标准的方法。