删除SQL查询中的空列

时间:2013-05-13 18:56:02

标签: php mysql codeigniter

我正在使用表格中的select *查询。

$query = $this->db->get($table_name);

我想要的是它放弃所有列的值为空的记录,例如

Array 
{ 
  Topic_1 -> 
  Topic_2 -> Cats
}

它会完全丢弃Topic_1键和值对。我也在使用Codeigniter活动记录,所以我尝试了

$query = $this->db->get_where($value, array(test_id != 'NULL'));

但是我不能指定每一列,我只想让test_id成为表中的所有列?是否有人可以这样做,或者我可以在返回查询后运行循环,它会丢弃不匹配的键值对吗?

1 个答案:

答案 0 :(得分:3)

首先,你做错了。你应该这样:

$query = $this->db->where('test_id !=', NULL)->get($value)->result_array();

当字段为NULL时,该查询将起作用,但在您的情况下,它不是NULL,它是空的。为了使该字段为NULL,您必须在创建表时将其指定为默认值。 查询您的案例将是:

$query = $this->db->where('test_id !=', '')->get($value)->result_array();

对于所有字段,我猜你需要使用foreach循环:

$data = array();
$field = array('field1', 'field2', ...);
foreach($field as $f) :
$query = $this->db->where($f, '')->get('table')->result_array();
$data = $data + $query;
endforeach;

这样在 $ data 中,您将获得所有空的字段。