Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
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 14/04/2011, 15h01   #1
Membre du Club
 
Inscription : mars 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 105
Points : 51
Points : 51
Par défaut [IQ 12.7] Erreur d'une requête

Bonjour,

Je voulais faire un contrôle sur le code année du numéro sécu.

Code :
1
2
3
4
5
6
SELECT * FROM
    (SELECT * FROM table1
    WHERE substr(NoSS, 2, 1) BETWEEN '0' AND '9'
    AND substr(NoSS, 3, 1) BETWEEN '0' AND '9') t1
WHERE year(today()) - 1900 - cast(substr(NoSS, 2, 2) AS integer)
NOT BETWEEN 16 AND 70
ASA Error -1001006: Data exception - data type conversion is not possible.

Code :
1
2
3
4
5
6
SELECT * FROM
    (SELECT * FROM table1
    WHERE substr(NoSS, 2, 1) BETWEEN '0' AND '9'
    AND substr(NoSS, 3, 1) BETWEEN '0' AND '9') t1
WHERE year(today()) - 1900 - cast(substr(NoSS, 2, 2) AS integer) < 16 OR 
year(today()) - 1900 - cast(substr(NoSS, 2, 2) AS integer) > 70
ASA Error -1001006: Data exception - data type conversion is not possible.

Code :
1
2
3
4
5
6
SELECT * FROM
    (SELECT * FROM table1
    WHERE substr(NoSS, 2, 1) BETWEEN '0' AND '9'
    AND substr(NoSS, 3, 1) BETWEEN '0' AND '9') t1
WHERE year(today()) - 1900 - cast(substr(NoSS, 2, 2) AS integer) < 16 OR 
--year(today()) - 1900 - cast(substr(NoSS, 2, 2) as integer) > 70
It works!

Code :
1
2
3
4
5
6
SELECT * FROM
    (SELECT * FROM table1
    WHERE substr(NoSS, 2, 1) BETWEEN '0' AND '9'
    AND substr(NoSS, 3, 1) BETWEEN '0' AND '9') t1
WHERE --year(today()) - 1900 - cast(substr(NoSS, 2, 2) as integer) < 16 or 
year(today()) - 1900 - cast(substr(NoSS, 2, 2) AS integer) > 70
It works too!



par avance
hittony est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 16h29   #2
Invité régulier
 
Homme
Consultant SAP
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 5
Points : 5
Bonjour,
Iq n'aime pas que l'on cast les types de données.

Souhaites tu sélectionner les gens entre 16 et 70 ans ?
Essayes la requête suivante :

Code :
1
2
3
4
5
6
SELECT * FROM
    (SELECT * FROM table1
    WHERE substr(NoSS, 2, 1) BETWEEN '0' AND '9'
    AND substr(NoSS, 3, 1) BETWEEN '0' AND '9') t1
WHERE
year(current date) - 1900 - convert(smallint, substr(NoSS,2,2))  BETWEEN 16 AND 70
Rémi.
remi. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 16h38   #3
Membre du Club
 
Inscription : mars 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 105
Points : 51
Points : 51
Citation:
Envoyé par remi. Voir le message
Souhaites tu sélectionner les gens entre 16 et 70 ans ?
Merci pour ta réponse, mais... je voulais le contraire.
hittony est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 18h11   #4
Invité régulier
 
Homme
Consultant SAP
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 5
Points : 5
Il suffit donc de rajouter le mot clé NOT devant between.
remi. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2011, 09h14   #5
Membre du Club
 
Inscription : mars 2010
Messages : 105
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 105
Points : 51
Points : 51
Citation:
Envoyé par hittony Voir le message
Bonjour,

Je voulais faire un contrôle sur le code année du numéro sécu.

Code :
1
2
3
4
5
6
SELECT * FROM
    (SELECT * FROM table1
    WHERE substr(NoSS, 2, 1) BETWEEN '0' AND '9'
    AND substr(NoSS, 3, 1) BETWEEN '0' AND '9') t1
WHERE year(today()) - 1900 - cast(substr(NoSS, 2, 2) AS integer)
NOT BETWEEN 16 AND 70
ASA Error -1001006: Data exception - data type conversion is not possible.
C'est exactement ce que j'ai essayé.
hittony est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 10h59   #6
Invité régulier
 
Homme
Consultant SAP
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Consultant SAP

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 5
Points : 5
Par défaut convert a la place de cast

Ajoute NOT a ma requête, pas a la tienne, chez moi ca marche.

Code :
1
2
3
4
5
6
SELECT * FROM
    (SELECT * FROM table1
    WHERE substr(NoSS, 2, 1) BETWEEN '0' AND '9'
    AND substr(NoSS, 3, 1) BETWEEN '0' AND '9') t1
WHERE
year(current date) - 1900 - convert(smallint, substr(NoSS,2,2)) NOT BETWEEN 16 AND 70
remi. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h12.


 
 
 
 
Partenaires

Hébergement Web