OVH Cloud OVH Cloud

INSERT avec des caractères spéciaux comme la "quote" ou la "("

5 réponses
Avatar
Romain ROEHRIG
Bonjour
Je rencontre un problème lorsque j'essaye de charger ma base avec les
données suivantes :

INSERT INTO client (nom, adresse)
VALUES ('123456','rue de l'armoirie')
Dans le cas présent, j'ai un plantage sur le L apostrophe de l'armoirie.
J'ai solutionné le problème en mettant 'rue de l''armoirie'. Existe t'il une
methode plus appropriée que celle-ci ?

INSERT INTO client (nom, adresse)
VALUES ('234567','rue de l'armoirie (escalier gauche)')
Ici j'ai un plantage avec les parenthèses encadrant "escalier gauche".
Quelqu'un peut-il me donner une solution pour résoudre cet autre problème ?

Merci

5 réponses

Avatar
Pascal Deliot
Bonjour Romain,

La solution adopter dans le premier cas est la bonne.
Pour le second cas, tu peut appliquer la même méthode au niveau de
apostrophe:

INSERT INTO client (nom, adresse)
VALUES ('234567','rue de l''armoirie (escalier gauche)')

les parenthèses dans la chaine de caractères ne devraient pas poser de
problème.


"Romain ROEHRIG" a écrit dans le
message de news:
Bonjour
Je rencontre un problème lorsque j'essaye de charger ma base avec les
données suivantes :

INSERT INTO client (nom, adresse)
VALUES ('123456','rue de l'armoirie')
Dans le cas présent, j'ai un plantage sur le L apostrophe de l'armoirie.
J'ai solutionné le problème en mettant 'rue de l''armoirie'. Existe t'il
une
methode plus appropriée que celle-ci ?

INSERT INTO client (nom, adresse)
VALUES ('234567','rue de l'armoirie (escalier gauche)')
Ici j'ai un plantage avec les parenthèses encadrant "escalier gauche".
Quelqu'un peut-il me donner une solution pour résoudre cet autre problème
?

Merci



Avatar
Romain ROEHRIG
Bonjour Pascal

C'est bien ce que j'ai fait pour le deuxième cas mais je me retrouve avec :
rue de l'armoirie '(escalier gauche').
Pas terrible quand même.
J'ai palié le problème en modifiant les parenthèses par des crochets.

"Pascal Deliot" a écrit :

Bonjour Romain,

La solution adopter dans le premier cas est la bonne.
Pour le second cas, tu peut appliquer la même méthode au niveau de
apostrophe:

INSERT INTO client (nom, adresse)
VALUES ('234567','rue de l''armoirie (escalier gauche)')

les parenthèses dans la chaine de caractères ne devraient pas poser de
problème.


"Romain ROEHRIG" a écrit dans le
message de news:
> Bonjour
> Je rencontre un problème lorsque j'essaye de charger ma base avec les
> données suivantes :
>
> INSERT INTO client (nom, adresse)
> VALUES ('123456','rue de l'armoirie')
> Dans le cas présent, j'ai un plantage sur le L apostrophe de l'armoirie.
> J'ai solutionné le problème en mettant 'rue de l''armoirie'. Existe t'il
> une
> methode plus appropriée que celle-ci ?
>
> INSERT INTO client (nom, adresse)
> VALUES ('234567','rue de l'armoirie (escalier gauche)')
> Ici j'ai un plantage avec les parenthèses encadrant "escalier gauche".
> Quelqu'un peut-il me donner une solution pour résoudre cet autre problème
> ?
>
> Merci
>





Avatar
Patrice
Dans le deuxième cas c'est toujours l'apostrophe qui pose problème et non
pas les parenthèses ...

Quel est le contexte ? Si c'est un script SQL c'est la bonne solution. Si
c'est une appli cliente (ADO, ADO.NET) il est également possible d"utiliser
des paramètres ce qui permet de s'affranchir des problèmes de "mise en
forme" des valeurs selon leur type en construisant la chaîne SQL...

Patrice
--

"Romain ROEHRIG" a écrit dans le
message de news:
Bonjour Pascal

C'est bien ce que j'ai fait pour le deuxième cas mais je me retrouve avec


:
rue de l'armoirie '(escalier gauche').
Pas terrible quand même.
J'ai palié le problème en modifiant les parenthèses par des crochets.

"Pascal Deliot" a écrit :

> Bonjour Romain,
>
> La solution adopter dans le premier cas est la bonne.
> Pour le second cas, tu peut appliquer la même méthode au niveau de
> apostrophe:
>
> INSERT INTO client (nom, adresse)
> VALUES ('234567','rue de l''armoirie (escalier gauche)')
>
> les parenthèses dans la chaine de caractères ne devraient pas poser de
> problème.
>
>
> "Romain ROEHRIG" a écrit dans


le
> message de news:
> > Bonjour
> > Je rencontre un problème lorsque j'essaye de charger ma base avec les
> > données suivantes :
> >
> > INSERT INTO client (nom, adresse)
> > VALUES ('123456','rue de l'armoirie')
> > Dans le cas présent, j'ai un plantage sur le L apostrophe de


l'armoirie.
> > J'ai solutionné le problème en mettant 'rue de l''armoirie'. Existe


t'il
> > une
> > methode plus appropriée que celle-ci ?
> >
> > INSERT INTO client (nom, adresse)
> > VALUES ('234567','rue de l'armoirie (escalier gauche)')
> > Ici j'ai un plantage avec les parenthèses encadrant "escalier gauche".
> > Quelqu'un peut-il me donner une solution pour résoudre cet autre


problème
> > ?
> >
> > Merci
> >
>
>
>


Avatar
Fred BROUARD
Bonjour,

vous pouvez utiliser une UDF apellée dans votre INSERT. Voici une telle fonction
qui réalise le doublement des apostrophes :


/****************************************************************************/
-- retourne une chaine interprétable en chaine SQL
/****************************************************************************/
CREATE FUNCTION FN_QUOTESTR(@S VARCHAR(8000))
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @OUT VARCHAR(8000)
SET @OUT = CASE
WHEN @S IS NULL
THEN 'NULL'
ELSE ''''+REPLACE(@S, '''', '''''')+''''
END
RETURN (@OUT)
END
GO


Avec cette UDF, vos insertion seront donc :

INSERT INTO client (nom, adresse)
VALUES ('123456', dbo.FN_QUOTESTR('rue de l'armoirie'))

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************



Romain ROEHRIG a écrit:
Bonjour
Je rencontre un problème lorsque j'essaye de charger ma base avec les
données suivantes :



> INSERT INTO client (nom, adresse)
> VALUES ('123456','rue de l'armoirie')
Dans le cas présent, j'ai un plantage sur le L apostrophe de l'armoirie.
J'ai solutionné le problème en mettant 'rue de l''armoirie'. Existe t'il une
methode plus appropriée que celle-ci ?

INSERT INTO client (nom, adresse)
VALUES ('234567','rue de l'armoirie (escalier gauche)')
Ici j'ai un plantage avec les parenthèses encadrant "escalier gauche".
Quelqu'un peut-il me donner une solution pour résoudre cet autre problème ?

Merci



Avatar
Fred BROUARD
Bonjour,

vous pouvez utiliser une UDF apellée dans votre INSERT. Voici une telle fonction
qui réalise le doublement des apostrophes :


/****************************************************************************/
-- retourne une chaine interprétable en chaine SQL
/****************************************************************************/
CREATE FUNCTION FN_QUOTESTR(@S VARCHAR(8000))
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @OUT VARCHAR(8000)
SET @OUT = CASE
WHEN @S IS NULL
THEN 'NULL'
ELSE ''''+REPLACE(@S, '''', '''''')+''''
END
RETURN (@OUT)
END
GO


Avec cette UDF, vos insertion seront donc :

INSERT INTO client (nom, adresse)
VALUES ('123456', dbo.FN_QUOTESTR('rue de l'armoirie'))

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************



Romain ROEHRIG a écrit:
Bonjour
Je rencontre un problème lorsque j'essaye de charger ma base avec les
données suivantes :



> INSERT INTO client (nom, adresse)
> VALUES ('123456','rue de l'armoirie')
Dans le cas présent, j'ai un plantage sur le L apostrophe de l'armoirie.
J'ai solutionné le problème en mettant 'rue de l''armoirie'. Existe t'il une
methode plus appropriée que celle-ci ?

INSERT INTO client (nom, adresse)
VALUES ('234567','rue de l'armoirie (escalier gauche)')
Ici j'ai un plantage avec les parenthèses encadrant "escalier gauche".
Quelqu'un peut-il me donner une solution pour résoudre cet autre problème ?

Merci