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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Select * from criteria where Criteria_ID in (6,7)
Tout fonctionne bien.

Quelqu'un aurait il une idée ?

Merci