2015-08-31 26 views
-1

我有一個腳本,產生一個帶有MySQL查詢結果的CSV文件。我面臨的最初問題是,Excel解釋條目000123(00),簡單地作爲1230。我通過以下this答案解決了這個問題。每個字段上的MySQL CONCAT沒有明確這樣做

所以,現在,如果我的SELECT如下:

SELECT employee.id, 
     employee.access_code, 
     employee.contact_number, 
     employee.buzzer_number 
FROM ... 

我將不得不將其更改爲:

SELECT CONCAT('\"=\"\"', employee.id, '\"\"\"') AS id, 
     CONCAT('\"=\"\"', employee.access_code, '\"\"\"') AS access_code, 
     CONCAT('\"=\"\"', employee.contact_number, '\"\"\"') AS contact_number, 
     CONCAT('\"=\"\"', employee.buzzer_number, '\"\"\"') AS buzzer_number 
FROM ... 

這似乎笨拙許多領域。有沒有一種方法可以將"=""[value]"""中的每個字段都打包,而SELECT子句中沒有明確這麼做?

+0

你可以當進口 – Alex

+0

@Alex我所知道的是Excel中設置邊的每一列的類型,但我在尋找不需要的解決方案生成CSV文件後進行干預。 – Ian2thedv

+0

導入導出或任何遷移過程始終是唯一的,因此通常您無法預測所有內容。一旦你在客戶端或服務器端更改操作系統,或者MS Office版本或服務器或客戶端上的國家/地區設置,總是需要修復一些問題。所以imho - 在Excel方面修復它比在sql方面浪費時間修復它要快得多,速度更快。因爲通常沒有什麼可以解決的。問題只是內容的解釋 – Alex

回答

1

這裏是你搜索什麼

SELECT 
    "tmp",     -- Databasename 
    "statistics",    -- Tablename 
    "CONCAT('\"=\"\"', ", -- Pre Field 
    ", \'\"\"\"\' ",   -- POST FIELD 
    "id"      -- BLOCKED Fields sep with comma 

    INTO @DB, @TABLE,@PRE,@POST,@BLOCKED; 


SELECT 
    CONCAT('SELECT ', @BLOCKED , ',\n', 
    GROUP_CONCAT(
    CONCAT(
     @PRE, 
     COLUMN_NAME, 
     @POST, 
     ') AS ' , 
     COLUMN_NAME 
    ) 
    SEPARATOR ',\n') , 
    '\n FROM ', @DB, '.', @TABLE) 
    FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @DB AND TABLE_NAME = @TABLE 
    INTO @SQL1; 

SELECT @SQL1; -- only to review the Query 

PREPARE stmt FROM @SQL1; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
+0

謝謝你的回答。儘管如此,在第一個「INTO」中應將@ dDB改爲@ DB。更新,我會接受答案,因爲它確實有效 – Ian2thedv

相關問題