Transformer un tableau de bits à l'intérieur d'une string en un nom de semaine

J'ai un varchar qui stocke datatables au format "1111111", où 1 peut replace 0 et viceversa. La longueur de la string est de 7 caractères, où chaque caractère indique le jour d'une semaine. pour 1010110: le caractère le plus à gauche (1) indique lundi et le caractère le plus à droite (0) indique dimanche et ainsi de suite et ainsi de suite. Je dois écrire une requête sql pour get des jours séparés par des virgules de la string donnée (varchar), dont les valeurs sont une. c'est-à-dire pour I / P 0101101:

O / p devrait être: mardi, jeudi, vendredi, dimanche

En MySQL, ceci est résolu de cette façon:

select *, concat_ws(',', if(subssortingng(days, 1, 1) = '1', 'Monday', null), if(subssortingng(days, 2, 1) = '1', 'Tuesday', null), if(subssortingng(days, 3, 1) = '1', 'Wednesday', null), if(subssortingng(days, 4, 1) = '1', 'Thursday', null), if(subssortingng(days, 5, 1) = '1', 'Friday', null), if(subssortingng(days, 6, 1) = '1', 'Saturday', null), if(subssortingng(days, 7, 1) = '1', 'Sunday', null) ) as result from t1 

Résultat de la requête:

 +---------+----------------------------------------------------------+ | DAYS | RESULT | +---------+----------------------------------------------------------+ | 0101101 | Tuesday,Thursday,Friday,Sunday | | 1010010 | Monday,Wednesday,Saturday | | 1111111 | Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday | | 0000000 | | +---------+----------------------------------------------------------+ 

Exemple de travail

Modifier:

Solution MS SQL Server 2008:

 with ResultTable as ( select *, case when subssortingng(days, 1, 1) = '1' then 'Monday,' else '' end + case when subssortingng(days, 2, 1) = '1' then 'Tuesday,' else '' end + case when subssortingng(days, 3, 1) = '1' then 'Wednesday,' else '' end + case when subssortingng(days, 4, 1) = '1' then 'Thursday,' else '' end + case when subssortingng(days, 5, 1) = '1' then 'Friday,' else '' end + case when subssortingng(days, 6, 1) = '1' then 'Saturday,' else '' end + case when subssortingng(days, 7, 1) = '1' then 'Sunday,' else '' end as Result from t1 ) select days, subssortingng(result, 0, len(result)) as result from ResultTable 

Exemple de travail

J'espère que cela t'aides.