cs_elpens
Messages postés260Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention 3 novembre 2007
-
30 août 2006 à 16:08
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 2013
-
1 sept. 2006 à 19:22
Bonjour,
J'ai un petit soucis avec une procédure SQL...
- J'ai un champs dans une table[Sequence] qui s'appelle Argument. Ce champs (nvarchar) contient des id d'une autre table [Contact], séparés par des ';'.
Ex : 30.1; 12.1; 1.1
Je voudrais que ma requete puisse :
- Extraire tout les id de la table
- Pour chaque id, aller rechercher 2 champs différents (nom et prenom) dans la table [Contact]
- Et les afficher dans une autre Requete.
DECLARE arg nvarchar(255)
SET arg = SELECT Sequence.Argument WHERE Sequence.idSequence LIKE '123--12'
SELECT FirstName, LastName FROM Contact WHERE idContact = SUBSTRING(???)
Mais déjà là, une erreur survient : 'nvarchar' is not a recognized CURSOR option.
Ensuite, je n'ai plus d'idée pour réussir une telle requete.
Merci d'avance pour votre aide, infos,... et bonne fin de journée
CREATE FUNCTION dbo.Split
(
@RowData nvarchar(2000),
@SplitOn nvarchar(5)
)
RETURNS @RtnValue table
(
Id int identity(1,1),
Data nvarchar(100)
)
AS
BEGIN
Declare @Cnt int
Set @Cnt = 1
While (Charindex(@SplitOn,@RowData)>0)
Begin
Insert Into @RtnValue (data)
Select
Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))
Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))
Set @Cnt = @Cnt + 1
End
Insert Into @RtnValue (data)
Select Data = ltrim(rtrim(@RowData))
Return
END
Cette focntion me semble simple
Pour l'utiliser
Il faut simplement
select * from dbo.split("1;2;3;5",";")
et le resultat est
1 | 1
2 | 2
3 | 3
4 | 5
Pour la suite de ton probleme je ne comprends pas trop
mais la fonction de split je pense te debloquera si je comprend le debut de ton raisonnement.
cs_Malkuth
Messages postés268Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention24 avril 20134 1 sept. 2006 à 19:22
Daccord avec le message précédent
pour l'erreur'nvarchar' is not a recognized CURSOR option.
Il faut un @ devant le nom des variable:
DECLARE @arg nvarchar(255)
SET @arg = ....