Bonjour,
J'utilise un champ bitmap pour stocker le profil de mes utilisateurs (champs varchar(800) stockant des 0 ou des 1 en fonction des réponses de l'utilisateur. Par ex si l'utilisateur a répondu oui au critère de profil 53, le champ bitmap comportera un 1 à la position 53).
Dans une requête, j'ai besoin de récupérer la liste des libellés de critère de profil associés à un utilisateur (les critères sont stockés dans la table criteria). J'ai fait une fonction pour extraire les identifiant de critères :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| DECLARE @ind int, @List varchar(2500)
Set @Ind = 1
set @List = ''
While @Ind <= len(@BitMap)
Begin
if SUBSTRING(@BitMap ,@Ind,1) = 1
Begin
if len(@List) = 0
set @List = Cast(@Ind as varchar(3))
else
set @List = @List + ',' + Cast(@Ind as varchar(3))
End
Set @Ind = @Ind + 1
End
RETURN @List |
Cette fonction me renvoi donc une liste des critères de l'utilisateur. Je l'utilise dans dans une requête du type :
Select * from criteria where Criteria_ID in (dbo.BitMapToList('0000011000000000000000000000000000..00000000'))
Lorsque je l'exécute, j'ai une erreur "Échec de la conversion de la valeur varchar '6,7' en type de données int."
si j'exécute la requête :
Select * from criteria where Criteria_ID in (6,7)
Tout fonctionne bien.
Quelqu'un aurait il une idée ?
Merci
Partager