2017-01-05 36 views
1

如何在MySQL负载outfile函数中用空格处理空值?如何在mysql中加载outfile函数时用空格处理空值?

下面是查询

SELECT * FROM employees WHERE `date` BETWEEN '2016-12-15' AND '2017-01-04' INTO OUTFILE '/tmp/test.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY "" LINES TERMINATED BY ' '; 

在列的空值被示出为以CSV NULL。我怎样才能使这个空白?

我不能使用IFNULL(Col,''),因为列是动态获取的,并且会写入一个函数来提取各个表中的数据。

if($table == 'employees'){ 
    $this->Target = ClassRegistry::init($table); 
    $this->Target->useTable = $table; 
    $allColumnHeaders = $this->Target->getColumnTypes(); 
    $header_fields = implode("','", array_keys($allColumnHeaders)); 
    $sql = " Select '" . $header_fields . "' UNION ALL SELECT $fields FROM " . $table . " WHERE date BETWEEN '" . $start_date . "' AND '" . $end_date . "'" 

    $sql = $sql . " INTO OUTFILE '" . $csvFile . "' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '' LINES TERMINATED BY '\n';"; 
    $result = $this->db->query($sql); 
} 
+1

灿你发布你的功能请 – Matt

+0

更新了问题 –

回答

0

一个有三种方法:

IFNULL

IFNULL(Col, '') 

COALESCE

COALESCE(Col, '') 

CASE语句

CASE WHEN Col IS NULL THEN '' ELSE Col END AS Col 
+0

“我不能使用'IFNULL(Col,'')'”。我猜''COALESCE'和'CASE EXPRESSION'也是一样的。 – sagi

+0

@sagi我会问功能 – Matt

+0

更新的问题 –