Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes 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 11/03/2011, 09h48   #1
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
Par défaut Equivalent de substring pour les integer

Bonjour;

Dans mes SP je dois récupérer une partie d'un champs integer pour déduire le mois de calcul.

j'aimerais savoir si il ya une fonction comme substring pour les Integer.

merci d'avance
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 10h31   #2
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Soit tu CAST ton integer en varchar puis tu utilises SUBSTRING soit tu joue avec des calcul

ex 1011 avec 11=mois

tu peux faire 1011 modulo 1000...

Mais tout cela ressemble à du bricolage?

Quelle est la modélisation de la table?
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 13h39   #3
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
Bonjour,

Citation:
Mais tout cela ressemble à du bricolage?
Moi j'aurai mis un point simple à la fin

Citation:
Quelle est la modélisation de la table?
Quelle modélisation ?

Citation:
integer pour déduire le mois de calcul.
Encore une fois c'est un problème de choix des types de données : pourquoi diantre faut-il que des gens s'acharnent (si, c'est de l'acharnement) à stocker des "dates" dans une colonne de type chaîne de caractères ou entier ...

Créez une table de dates !

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/03/2011, 14h08   #4
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
j'ai utilisé le % ça marche merci bcp
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/03/2011, 14h26   #5
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
Encore une fois c'est un problème de choix des types de données : pourquoi diantre faut-il que des gens s'acharnent (si, c'est de l'acharnement) à stocker des "dates" dans une colonne de type chaîne de caractères ou entier ...

Créez une table de dates !
Résultat :
Citation:
j'ai utilisé le % ça marche merci bcp
Bon ben tant pis
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/03/2011, 14h30   #6
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
à stocker des "dates" dans une colonne de type chaîne de caractères ou entier ...
Je trouve que vous êtes d'un naturel optimiste!

Xavier81 n'a pas précisé que la colonne herbergeait (candestinement surement)des dates sous forme d'entier.

Je pense a quelque chose de bien pire par exemple 21368212122011
avec 213 leresultat du calcul 682 l'ID du USER qui a fait le calcul et à la fin la 'date'
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/03/2011, 15h56   #7
Invité de passage
 
Inscription : avril 2008
Messages : 65
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 65
Points : 3
Points : 3
effectivement j'ai une colone qui regroupe le mois et l'année:

201001 par exemple

donc je voulais extraire seulement le mois pour faire une comparaison dans une clause where.
xavier81 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/03/2011, 16h02   #8
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Citation:
Envoyé par xavier81 Voir le message
effectivement j'ai une colone qui regroupe le mois et l'année:
201001 par exemple
donc je voulais extraire seulement le mois pour faire une comparaison dans une clause where.
C'est dégueulasse ! Et pourquoi pas ne pas mettre ça dans deux champs ? C'est trop simple ?

Sinon regarde le bricolage suivant qui reste dans l'esprit
Code :
1
2
3
declare @val int
SET @val = 201011 
SELECT @val - 100*(@val / 100)  mois
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h57   #9
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
Sinon regarde le bricolage suivant qui reste dans l'esprit
Toujours dans la catégorie Leroy Merlin :
Code SQL :
1
2
3
 
DECLARE @n AS INT  = 201103
SELECT  RIGHT(@n, 2) AS Mois
Citation:

Mois
----
03
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 18h11   #10
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
quote=aieeeuuuuu;5835503]Toujours dans la catégorie Leroy Merlin :
Code SQL :
1
2
DECLARE @n AS INT  = 201103
SELECT  RIGHT(@n, 2) AS Mois
[/quote]
Attention cependant car RIGHT retourne un VARCHAR.

Mais pour le transtyper simplement on peut faire comme ceci :
Code :
1
2
3
4
5
6
7
DECLARE @n AS INT 
SET @n  = 201103
SELECT  RIGHT(@n, 2) + 0  AS Mois
 
Mois
-----------
3
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ 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 00h09.


 
 
 
 
Partenaires

Hébergement Web