2017-01-05 6 views
1

MySQL load outfile 함수에서 공백으로 null 값을 처리하는 방법은 무엇입니까?mysql load outfile 함수에서 공백으로 null 값을 처리하는 방법은 무엇입니까?

다음은 열에

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 (콜, '')'"사용할 수 없습니다. 나는'COALESCE'와'CASE EXPRESSION'에 대해서도 마찬가지라고 생각합니다. – sagi

+0

@sagi 기능을 묻습니다. – Matt

+0

질문이 업데이트되었습니다. –