OVH Cloud OVH Cloud

If en SQL

4 réponses
Avatar
Alain
Bonjour,
je veux faire une requ=EAte SQl qui me d=E9coupe un champ=20
Adresse de ma table CLIENT en fonction des retours =E0 la=20
ligne. J'ai fais ceci :

select Adresse ,=20
IF charindex(CHAR(13)+CHAR(10) , Adresse )
BEGIN
SUBSTRING ( Adresse , 0 ,charindex(CHAR(13)+CHAR
(10) , Adresse ))
END
from Client

Quand je l'ex=E9cute par l'analyseur de requ=EAte j'ai un :
Incorrect syntax near the keyword 'IF'
Incorrect syntax near the keyword 'BEGIN'

Quelqu'un =E0 une id=E9e ?

Merci d'avance

4 réponses

Avatar
Laurent Moreau
Regarde plutot du coté de CASE pour faire une requete du genre:

Je modifie un peu ta requete....., attention, ca se contente de couper
l'adresse au premier CRLF rencontré.


SELECT Adresse ,
CASE charindex(CHAR(13)+CHAR(10) , Adresse )
WHEN 0 THEN Adresse
ELSE LEFT( Adresse , charindex(CHAR(13)+CHAR(10) , Adresse ) - 1)
END AS AdresseCoupeeAuPremierCRLF
FROM Client


Je pense qu'il faut mettre -1 car sinon tu vas récupérer le CHAR(13) dans ta
chaine de destination,
j'ai pas testé....



Laurent.




"Alain" wrote in message
news:4d8e01c473c3$a97ee860$
Bonjour,
je veux faire une requête SQl qui me découpe un champ
Adresse de ma table CLIENT en fonction des retours à la
ligne. J'ai fais ceci :

select Adresse ,
IF charindex(CHAR(13)+CHAR(10) , Adresse )
BEGIN
SUBSTRING ( Adresse , 0 ,charindex(CHAR(13)+CHAR
(10) , Adresse ))
END
from Client

Quand je l'exécute par l'analyseur de requête j'ai un :
Incorrect syntax near the keyword 'IF'
Incorrect syntax near the keyword 'BEGIN'

Quelqu'un à une idée ?

Merci d'avance
Avatar
Alain
Super merci ça marche.
Si je fais un While pour récupérer toutes les lignes une
à une ça va marcher ?

-----Message d'origine-----
Regarde plutot du coté de CASE pour faire une requete du


genre:

Je modifie un peu ta requete....., attention, ca se


contente de couper
l'adresse au premier CRLF rencontré.


SELECT Adresse ,
CASE charindex(CHAR(13)+CHAR(10) , Adresse )
WHEN 0 THEN Adresse
ELSE LEFT( Adresse , charindex(CHAR(13)+CHAR(10) ,


Adresse ) - 1)
END AS AdresseCoupeeAuPremierCRLF
FROM Client


Je pense qu'il faut mettre -1 car sinon tu vas récupérer


le CHAR(13) dans ta
chaine de destination,
j'ai pas testé....



Laurent.




"Alain" wrote in


message
news:4d8e01c473c3$a97ee860$
Bonjour,
je veux faire une requête SQl qui me découpe un champ
Adresse de ma table CLIENT en fonction des retours à la
ligne. J'ai fais ceci :

select Adresse ,
IF charindex(CHAR(13)+CHAR(10) , Adresse )
BEGIN
SUBSTRING ( Adresse , 0 ,charindex(CHAR(13)+CHAR
(10) , Adresse ))
END
from Client

Quand je l'exécute par l'analyseur de requête j'ai un :
Incorrect syntax near the keyword 'IF'
Incorrect syntax near the keyword 'BEGIN'

Quelqu'un à une idée ?

Merci d'avance


.



Avatar
Laurent Moreau
Pour bien répondre:
tu veux faire quoi plus précisement:
- apres un chargement ou a chaque insertion dans la base, décomposer le
champ adresse en ad1, ad2, ad3, ad4, ad5
ou
- a chaque interrogation de la table (sur chaque select) décomposer le champ
adresse en ad1, ad2, ad3, ad4, ad5

?


Laurent.




"Alain" wrote in message
news:4d0901c473c6$eca917c0$
Super merci ça marche.
Si je fais un While pour récupérer toutes les lignes une
à une ça va marcher ?

-----Message d'origine-----
Regarde plutot du coté de CASE pour faire une requete du


genre:

Je modifie un peu ta requete....., attention, ca se


contente de couper
l'adresse au premier CRLF rencontré.


SELECT Adresse ,
CASE charindex(CHAR(13)+CHAR(10) , Adresse )
WHEN 0 THEN Adresse
ELSE LEFT( Adresse , charindex(CHAR(13)+CHAR(10) ,


Adresse ) - 1)
END AS AdresseCoupeeAuPremierCRLF
FROM Client


Je pense qu'il faut mettre -1 car sinon tu vas récupérer


le CHAR(13) dans ta
chaine de destination,
j'ai pas testé....



Laurent.




"Alain" wrote in


message
news:4d8e01c473c3$a97ee860$
Bonjour,
je veux faire une requête SQl qui me découpe un champ
Adresse de ma table CLIENT en fonction des retours à la
ligne. J'ai fais ceci :

select Adresse ,
IF charindex(CHAR(13)+CHAR(10) , Adresse )
BEGIN
SUBSTRING ( Adresse , 0 ,charindex(CHAR(13)+CHAR
(10) , Adresse ))
END
from Client

Quand je l'exécute par l'analyseur de requête j'ai un :
Incorrect syntax near the keyword 'IF'
Incorrect syntax near the keyword 'BEGIN'

Quelqu'un à une idée ?

Merci d'avance


.



Avatar
Alain
2ème solution, je veux décomposer mon champ adresse en
ad1, ad2 et ad3 sur chaque select.
J'essaye de voir si je peux faire ça en reprenant qu'une
partie de mon champ adresse à chaque fois ....

-----Message d'origine-----
Pour bien répondre:
tu veux faire quoi plus précisement:
- apres un chargement ou a chaque insertion dans la


base, décomposer le
champ adresse en ad1, ad2, ad3, ad4, ad5
ou
- a chaque interrogation de la table (sur chaque select)


décomposer le champ
adresse en ad1, ad2, ad3, ad4, ad5

?


Laurent.




"Alain" wrote in


message
news:4d0901c473c6$eca917c0$
Super merci ça marche.
Si je fais un While pour récupérer toutes les lignes une
à une ça va marcher ?

-----Message d'origine-----
Regarde plutot du coté de CASE pour faire une requete du


genre:

Je modifie un peu ta requete....., attention, ca se


contente de couper
l'adresse au premier CRLF rencontré.


SELECT Adresse ,
CASE charindex(CHAR(13)+CHAR(10) , Adresse )
WHEN 0 THEN Adresse
ELSE LEFT( Adresse , charindex(CHAR(13)+CHAR(10) ,


Adresse ) - 1)
END AS AdresseCoupeeAuPremierCRLF
FROM Client


Je pense qu'il faut mettre -1 car sinon tu vas récupérer


le CHAR(13) dans ta
chaine de destination,
j'ai pas testé....



Laurent.




"Alain" wrote in


message
news:4d8e01c473c3$a97ee860$
Bonjour,
je veux faire une requête SQl qui me découpe un champ
Adresse de ma table CLIENT en fonction des retours à la
ligne. J'ai fais ceci :

select Adresse ,
IF charindex(CHAR(13)+CHAR(10) , Adresse )
BEGIN
SUBSTRING ( Adresse , 0 ,charindex(CHAR(13)+CHAR
(10) , Adresse ))
END
from Client

Quand je l'exécute par l'analyseur de requête j'ai un :
Incorrect syntax near the keyword 'IF'
Incorrect syntax near the keyword 'BEGIN'

Quelqu'un à une idée ?

Merci d'avance


.





.