Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > Informix
Informix Forum d'entraide Informix
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 11/12/2007, 12h20   #1
Membre habitué
 
Michel
Inscription : mars 2005
Messages : 176
Détails du profil
Informations personnelles :
Nom : Michel
Âge : 39
Localisation : France

Informations forums :
Inscription : mars 2005
Messages : 176
Points : 128
Points : 128
Par défaut [Résolu] - garder les zéros non significatif

Bonjour,

Je cherche à incrémenter la valeur d'un champ d'une série de données par une requête. Mon soucis est que ce champ est typé char(2).

Si seance_num_ordre = "02".
En exécutant la requête :
Code :
UPDATE ma_table SET seance_num_ordre = seance_num_ordre + 1 WHERE numero = "608153"
seance_num_ordre devient "3"... Alors que je souhaiterais "03"

J'arrive à des choses curieuses du genre :
Code :
UPDATE ma_table SET seance_num_ordre = lpad(seance_num_ordre + 1, 3, "0") WHERE numero = "608153"
Mais du coup seance_num_ordre devient "3."

Avez-vous une idée comment garder le zéro non significatif?
Car si je fait un tri sur ce champ par la suite, bien sûr "3" est plus grand que "09"...

Michel
Michelk12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 14h42   #2
Membre habitué
 
Inscription : novembre 2007
Messages : 103
Détails du profil
Informations personnelles :
Âge : 64
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2007
Messages : 103
Points : 109
Points : 109
Par défaut Garder les zéros non significatifs

Bonjour,

Je propose d'ajouter cette requête :

Code :
1
2
3
4
5
 
UPDATE ma_table
SET    ma_table.seance_num_ordre[1] = "0"
WHERE  ma_table.seance_num_ordre[1] IS NULL
OR     ma_table.seance_num_ordre[1] = " ";
Cela dit, une colonne destinée à recevoir une information de type numérique devrait être déclarée en numérique SMALLINT ou DECIMAL(2) pour le cas que tu évoques.

Pour avoir vécu le même problème j'ai dû m'y résoudre et revoir tous mes développements.
IFA2377 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 18h10   #3
Membre habitué
 
Michel
Inscription : mars 2005
Messages : 176
Détails du profil
Informations personnelles :
Nom : Michel
Âge : 39
Localisation : France

Informations forums :
Inscription : mars 2005
Messages : 176
Points : 128
Points : 128
Par défaut [Résolu] - garder les zéros non significatif

Merci IFA,

En fait j'ai tapoté une requête supplémentaire un peu plus "lourde"
Code :
UPDATE ma_table SET seance_num_ordre = "0" || seance_num_ordre WHERE seance_num_ordre IN ("1","2","3","4","5","6","7","8","9");
pour moi

Michel
Michelk12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 14h54   #4
Membre habitué
 
Inscription : novembre 2007
Messages : 103
Détails du profil
Informations personnelles :
Âge : 64
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2007
Messages : 103
Points : 109
Points : 109
Par défaut Garder les zéros non significatifs

Bonjour,

Le nombre d'affichages du sujet progressant, soit par intérêt, soit par curiosité, je complète ma proposition car comme on dit : ça va sans dire mais ça va mieux en le disant. Il est donc permis, bien sûr, d'intervenir sur une suite de caractères. La syntaxe est la suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
UPDATE nom_table
SET    nom_table.nom_colonne[n,m] = "variable"
WHERE  nom_table.nom_colonne[n,m] IS NULL
OR     nom_table.nom_colonne[n,m] = " ";
 
ou
 
UPDATE nom_table
SET    nom_table.nom_colonne[n,m] = "variable"
WHERE  condition;
IFA2377 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 07h04.


 
 
 
 
Partenaires

Hébergement Web