Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2011, 16h12   #1
Membre régulier
 
Homme Loïc JUSTIN
Administrateur de base de données
Inscription : novembre 2004
Messages : 234
Détails du profil
Informations personnelles :
Nom : Homme Loïc JUSTIN
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2004
Messages : 234
Points : 91
Points : 91
Par défaut Problème sur requête sql

Je possède une base avec des noms d'applications qui possèdent trois ou quatre + à la fin.
Mon script fonctionne correctement quand j'ai trois plus par contre si j'en ai quatre il m’enlève les quatre alors qu'il devrait m'enlever que trois
Code :
1
2
3
4
5
6
7
8
9
10
11
12
SELECT hostname,id_appli,basicat,application,
case when instr(application,'+++',length(application)-3) != '0' 
then rtrim(substr(application,1,instr(application,'+++',1)),'+')
else application
end AS application_m,applis,
case when instr(applis,'+++',length(applis)-3) !='0' 
then rtrim(substr(applis,1,instr(applis,'+++',1)),'+')
else applis
end AS applis_m,
entite_exploitante,id_usa,
top_sox,dif_service
FROM compareserveursapplis
D'avance merci pour vos pistes de reflexion
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,
n'en déduits pas que c'est la cruche qui est vide.
JUSTIN Loïc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 19h09   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par JUSTIN Loïc Voir le message
Je possède une base avec des noms d'applications qui possèdent trois ou quatre + à la fin.
Mon script fonctionne correctement quand j'ai trois plus par contre si j'en ai quatre il m’enlève les quatre alors qu'il devrait m'enlever que trois
Votre logique de code est erronée, laissez tomber les CASE et faites simplement :
Code :
rtrim(application, '+++')
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 08h43   #3
Membre régulier
 
Homme Loïc JUSTIN
Administrateur de base de données
Inscription : novembre 2004
Messages : 234
Détails du profil
Informations personnelles :
Nom : Homme Loïc JUSTIN
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2004
Messages : 234
Points : 91
Points : 91
Bonjour

merci pour l'information.
Par contre dans mon cas cela ne fonctionne pas
Code :
1
2
3
4
5
SELECT application,
rtrim(application,'+++')
FROM compareserveursapplis
WHERE application = 'CONSO++++'
ORDER BY 1;
Résultat
Citation:
application | rtrim
-------------+-------
CONSO++++ | CONSO
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,
n'en déduits pas que c'est la cruche qui est vide.
JUSTIN Loïc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 08h56   #4
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Sous SQLServeur et FIREBIRD, la syntaxe est :
Code :
TRIM(TRAILING '+' FROM application)
dehorter olivier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 08h57   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 642
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 642
Points : 2 636
Points : 2 636
Quel est votre SGBD ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h07   #6
Membre régulier
 
Homme Loïc JUSTIN
Administrateur de base de données
Inscription : novembre 2004
Messages : 234
Détails du profil
Informations personnelles :
Nom : Homme Loïc JUSTIN
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2004
Messages : 234
Points : 91
Points : 91
C'est du postgresql, version 7.4.13
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,
n'en déduits pas que c'est la cruche qui est vide.
JUSTIN Loïc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h26   #7
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 642
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 642
Points : 2 636
Points : 2 636
http://docs.postgresql.fr/7.4/functi...S-STRING-OTHER

Essayez avec un replace ?
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h30   #8
Membre régulier
 
Homme Loïc JUSTIN
Administrateur de base de données
Inscription : novembre 2004
Messages : 234
Détails du profil
Informations personnelles :
Nom : Homme Loïc JUSTIN
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2004
Messages : 234
Points : 91
Points : 91
@dehorter olivier
Merci pour ta syntaxe, je ne connaissais pas.
Je viens de la tester, elle fonctionne mais elle donne le même résultat que la commande de Waldar
Code :
1
2
3
4
5
6
SELECT application,
rtrim(application,'+++') AS test1,
TRIM(TRAILING '+' FROM application) AS test2
FROM compareserveursapplis
WHERE application = 'CONSO++++'
ORDER BY 1;
Citation:
application | test1 | test2
-------------+-------+-------
CONSO++++ | CONSO | CONSO
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,
n'en déduits pas que c'est la cruche qui est vide.
JUSTIN Loïc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h39   #9
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 642
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 642
Points : 2 636
Points : 2 636
c'est normal, lisez la doc.
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h40   #10
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Mais quel résultat attends-tu ?
dehorter olivier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 09h51   #11
Membre régulier
 
Homme Loïc JUSTIN
Administrateur de base de données
Inscription : novembre 2004
Messages : 234
Détails du profil
Informations personnelles :
Nom : Homme Loïc JUSTIN
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2004
Messages : 234
Points : 91
Points : 91
Citation:
Envoyé par punkoff Voir le message
Effectivement c’était cette commande qu'il fallait que j'utilise
Voici ma commande SQL pour test
Code :
1
2
3
4
5
6
7
8
SELECT application,
rtrim(application,'+++') AS test1,
TRIM(TRAILING '+' FROM application) AS test2,
TRANSLATE(application,'+++','') AS test3,
REPLACE(application,'+++','') AS test4
FROM compareserveursapplis
WHERE application = 'CONSO++++'
ORDER BY 1;
Voici le résultat
Citation:
application | test1 | test2 | test3 | test4
-------------+-------+-------+-------+--------
CONSO++++ | CONSO | CONSO | CONSO | CONSO+
C'est mon test4 qui est bon
@Punkoff
Citation:
c'est normal, lisez la doc.
Pas de commentaire
__________________
Si tu tapes ta tête contre une cruche et que ça sonne creux,
n'en déduits pas que c'est la cruche qui est vide.
JUSTIN Loïc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h14.


 
 
 
 
Partenaires

Hébergement Web