2015-08-25 36 views
0

下面是我的表和存儲過程只得到offdays的清單,逗號分隔值: -如何從MySQL存儲過程或函數獲取Concat逗號分隔值?

OffDaysTable 
offDayID |SundayOff| MondayOff|TuesdayOff|WensdayOff|ThursdayOff| FridayOff| SaturadyOff 
1   1   1   1   0   0   0   0 


CREATE PROCEDURE GetOffDays 
() 
BEGIN 
DECLARE offdays VARCHAR(25); 
SET offdays = ''; 
    SELECT offdays = case SundayOff when 1 then '1' else '' end, 
    offdays = case MondayOff when 1 then 
    CASE LENGTH(LTRIM(RTRIM(offdays))) when 0 then '2' else concat(offdays,',' ,'2') end else offdays end 
    ,offdays = case TuesdayOff when 1 then 
    CASE LENGTH(LTRIM(RTRIM(offdays))) when 0 then '3' else concat(offdays,',' ,'3') end else offdays end 
    ,offdays = case WednesdayOff when 1 then 
    CASE LENGTH(LTRIM(RTRIM(offdays))) when 0 then '4' else concat(offdays,',' ,'4') end else offdays end 
    ,offdays = case ThursdayOff when 1 then 
    CASE LENGTH(LTRIM(RTRIM(offdays))) when 0 then '5' else concat(offdays,',' ,'5') end else offdays end 
    ,offdays = case FridayOff when 1 then 
    CASE LENGTH(LTRIM(RTRIM(offdays))) when 0 then '6' else concat(offdays,',' ,'6') end else offdays end 
    ,offdays = case SaturdayOff when 1 then 
    CASE LENGTH(LTRIM(RTRIM(offdays))) when 0 then '7' else concat(offdays,',' ,'7') end else offdays end 
FROM school_information; 
    SELECT offdays; 
END; 

我的存儲過程返回沒有任何人可以幫助找出出來的結果,如: -

offdays 
1,2,3 

回答

1

未經檢驗的,但我認爲這應該給你想要的東西:

CREATE PROCEDURE GetOffDays 
() 
BEGIN 
DECLARE offdays VARCHAR(25); 
SET offdays = ''; 
    SELECT CONCAT(case SundayOff when 1 then '1,' else '' end, 
    case MondayOff when 1 then '2,' else '' end, 
    case TuesdayOff when 1 then '3,' else '' end, 
    case WednesdayOff when 1 then '4,' else '' end, 
    case ThursdayOff when 1 then '5,' else '' end, 
    case FridayOff when 1 then '6,' else '' end, 
    case SaturdayOff when 1 then '7,' else '' end) 
FROM school_information INTO offdays; 
    SELECT IF(RIGHT(offdays,1) = ',',LEFT(offdays,LENGTH(offdays) -1),offdays) offdays; 
END; 

你需要的,如果你使用的是SELE在MySQL中使用INTO CT(SET允許a = b)。

+0

Giles它給了我空白的返回值nothing –

+0

謝謝你的作品經過一些修正後再次非常感謝你 –

+0

你打我吧:)我已經在第一篇文章中糾正了代碼,對不起! – Giles

相關問題