2013-02-14 57 views
2

我有下面這個查詢是完美的工作。我只是無法弄清楚如何在val_4上使用RPAD函數。我嘗試在CASE中使用RPAD,但失敗。MySQL CASE和RPAD問題

SELECT RPAD(val_1,1,' '), RPAD(val_2,9,' '), RPAD(val_3,6,' '), 
    (CASE val_4 
     WHEN 'abc' THEN 'USEABLE' 
     WHEN 'abcd' THEN 'USEABLE' 
     WHEN 'abcde' THEN 'USEABLE' 
     ELSE 'UNUSABLE' 
    END) 
FROM lists 
INTO OUTFILE '/path/to/file' 
FIELDS TERMINATED BY '' 
LINES TERMINATED BY '\n'; 
+0

出於好奇,在這種特殊情況下使用'RPAD'有什麼意義,因爲你的'CASE'中總是有不變的文字值?或者我錯過了什麼? – peterm 2013-02-14 04:32:23

+0

@peterm我猜這只是一個抽象。 – 2013-02-14 05:41:28

+0

是的,價值並不總是可用的,它所進入的系統需要有一定的寬度。 – 2013-02-14 15:50:38

回答

3

結束語整個案件:

SELECT RPAD(val_1,1,' '), RPAD(val_2,9,' '), RPAD(val_3,6,' '), 
    RPAD(CASE val_4 
     WHEN 'abc' THEN 'USEABLE' 
     WHEN 'abcd' THEN 'USEABLE' 
     WHEN 'abcde' THEN 'USABLE' 
     ELSE 'abcdef' 
    END, 6, ' ') 
FROM lists 
INTO OUTFILE '/path/to/file' 
FIELDS TERMINATED BY '' 
LINES TERMINATED BY '\n'; 

SQL Fiddle example


或者包裝的val_4只值:

SELECT RPAD(val_1,1,' '), RPAD(val_2,9,' '), RPAD(val_3,6,' '), 
    CASE RPAD(val_4,4,' ') 
     WHEN 'abc' THEN 'USEABLE' 
     WHEN 'abcd' THEN 'USEABLE' 
     WHEN 'abcde' THEN 'USABLE' 
     ELSE 'abcdef' 
    END 
FROM lists 
INTO OUTFILE '/path/to/file' 
FIELDS TERMINATED BY '' 
LINES TERMINATED BY '\n'; 

SQL Fiddle example