删除SQL查询中的空列


Removing null columns in SQL query

我正在使用一个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是表中的所有列?是否有人可以这样做,或者我可以在查询返回后运行循环,它丢弃不匹配的键值对?

首先,你做NULL是错误的。你应该这样做:

$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中,您将获得所有空字段。