这就是我的表格。
id col1 col2
---------------
1 a x
2 NULL y
3 NULL z
4 NULL t
col1的默认值为NULL
。
我想使用col1数据如果col1不为null,否则使用col2数据。
function something($col1,$col2)
{
if(is_null($col1) == true)
$var = $col2
else
$var = $col1
return $var;
}
function something2($col1,$col2)
{
if($col1 === NULL)
$var = $col2
else
$var = $col1
return $var;
}
这是我的问题。这两个函数都返回$ col2值。但正如您在第一行中看到的那样,col2列不为null。我究竟做错了什么? 更新:寻找使用PHP的解决方案,我需要col1和col2值。
我还想了解,使用NULL值是否是本例的最佳实践?
答案 0 :(得分:3)
您应该在sql查询中查看使用COALESCE(),只返回要显示的数据。这样可以防止你完全不需要这个函数/逻辑。
SELECT Id, COALESCE(col1, col2)
FROM yourTable
此外,对于PHP,您可以考虑更改if(is_null($col1) == true)
并改为使用if(is_null($col1))
。它更小,更简洁,并消除了使用=
个符号的问题以及True
更新Andreas提出的包含选项的答案:
SELECT Id, col1, col2
, IFNULL(col1, col2) AS NotNullColumn
FROM yourTable
答案 1 :(得分:3)
我在你的问题中看到了一些问题:
我想使用col1数据如果col2不为null,如果它我将使用col2数据。
我假设你的意思是你想使用col2数据,如果col1是null,否则使用col1。在这种情况下,你的PHP有问题。不确定您是否提供了示例代码,但是您没有将任何变量传递给函数,也没有将它们声明为func中的全局变量。
function something($col1, $col2){
if(is_null($col1) == true)
$var = $col2;
else
$var = $col1;
return $var;
}
function something2($col1, $col2){
if($col1 === NULL)
$var = $col2;
else
$var = $col1;
return $var;
}
echo something('a','x');
echo something2('a','x');
这会给你一个'在这两种情况下
echo something(NULL,'b');
echo something2(NULL,'b');
这会给你''
答案 2 :(得分:1)
签出IFNULL,如果不是null,它会给你col1。否则它会给你col2。
SELECT id, IFNULL(col1, col2) FROM <table>;