Extraire la partie numérique d'une colonne alpha pour un tri.
4 réponses
jerome
Bonjour,
J'ai une colonne alpha numérique qui contient soit des numériques soit une
combinaison de données alpha et numériques.
Exemples :
1
111
22
FT323
WX154
...
Comment puis-je trier ces données pour obtenir
1
22
111
WX154
FT323
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
jerome a écrit :
Bonjour,
J'ai une colonne alpha numérique qui contient soit des numériques soit une combinaison de données alpha et numériques. Exemples : 1 111 22 FT323 WX154 ...
Comment puis-je trier ces données pour obtenir 1 22 111 WX154 FT323
Merci
Il n'y a pas de solution simple à votre problème car votre base viole la première forme normale ! http://sqlpro.developpez.com/cours/standards/#L2.2 restructurez votre base correctement et votre requête deviendra évidente. Une base de données, c'est pas un fichier COBOL !!!
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
jerome a écrit :
Bonjour,
J'ai une colonne alpha numérique qui contient soit des numériques soit une
combinaison de données alpha et numériques.
Exemples :
1
111
22
FT323
WX154
...
Comment puis-je trier ces données pour obtenir
1
22
111
WX154
FT323
Merci
Il n'y a pas de solution simple à votre problème car votre base viole la
première forme normale !
http://sqlpro.developpez.com/cours/standards/#L2.2
restructurez votre base correctement et votre requête deviendra évidente.
Une base de données, c'est pas un fichier COBOL !!!
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
J'ai une colonne alpha numérique qui contient soit des numériques soit une combinaison de données alpha et numériques. Exemples : 1 111 22 FT323 WX154 ...
Comment puis-je trier ces données pour obtenir 1 22 111 WX154 FT323
Merci
Il n'y a pas de solution simple à votre problème car votre base viole la première forme normale ! http://sqlpro.developpez.com/cours/standards/#L2.2 restructurez votre base correctement et votre requête deviendra évidente. Une base de données, c'est pas un fichier COBOL !!!
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
jerome
"Fred BROUARD" wrote in message news:
jerome a écrit : > Bonjour, > > J'ai une colonne alpha numérique qui contient soit des numériques soit
une
> combinaison de données alpha et numériques. > Exemples : > 1 > 111 > 22 > FT323 > WX154 > ... > > Comment puis-je trier ces données pour obtenir > 1 > 22 > 111 > WX154 > FT323 > > Merci > > Il n'y a pas de solution simple à votre problème car votre base viole la première forme normale ! http://sqlpro.developpez.com/cours/standards/#L2.2 restructurez votre base correctement et votre requête deviendra évidente. Une base de données, c'est pas un fichier COBOL !!!
Ben oui je sais bien mais c'est une base que je récupère et, pour l'instant, je ne me vois pas tout restructurer. Une idée quand même pour extraire les données numériques de la colonne alpha ?
Merci
"Fred BROUARD" <brouardf@club-internet.fr> wrote in message
news:eJVRSvFqHHA.2044@TK2MSFTNGP04.phx.gbl...
jerome a écrit :
> Bonjour,
>
> J'ai une colonne alpha numérique qui contient soit des numériques soit
une
> combinaison de données alpha et numériques.
> Exemples :
> 1
> 111
> 22
> FT323
> WX154
> ...
>
> Comment puis-je trier ces données pour obtenir
> 1
> 22
> 111
> WX154
> FT323
>
> Merci
>
>
Il n'y a pas de solution simple à votre problème car votre base viole la
première forme normale !
http://sqlpro.developpez.com/cours/standards/#L2.2
restructurez votre base correctement et votre requête deviendra évidente.
Une base de données, c'est pas un fichier COBOL !!!
Ben oui je sais bien mais c'est une base que je récupère et, pour l'instant,
je ne me vois pas tout restructurer.
Une idée quand même pour extraire les données numériques de la colonne alpha
?
jerome a écrit : > Bonjour, > > J'ai une colonne alpha numérique qui contient soit des numériques soit
une
> combinaison de données alpha et numériques. > Exemples : > 1 > 111 > 22 > FT323 > WX154 > ... > > Comment puis-je trier ces données pour obtenir > 1 > 22 > 111 > WX154 > FT323 > > Merci > > Il n'y a pas de solution simple à votre problème car votre base viole la première forme normale ! http://sqlpro.developpez.com/cours/standards/#L2.2 restructurez votre base correctement et votre requête deviendra évidente. Une base de données, c'est pas un fichier COBOL !!!
Ben oui je sais bien mais c'est une base que je récupère et, pour l'instant, je ne me vois pas tout restructurer. Une idée quand même pour extraire les données numériques de la colonne alpha ?
Merci
Patrice
Quelque chose comme (non testé) :
CREATE FUNCTION MaFonction(@MaChaine VARCHAR(10)) RETURNS INT AS BEGIN DECLARE @Position TINYINT -- Partir de la fin SET @Position=LEN(@Chaine) -- Trouver le dernier nom numérique WHILE SUBSTRING(@Chaine,@Position,1) BETWEEN '0' AND '9' SET @Position=@Position-1 -- Retourner le résultat RETURN RIGHT(@Chaine,LEN(@Chaine))
P.S : ajouter aussi une condition d'arrêt ou un test pour convertir directement la chaine si elle est entièrement numérique (style IF ISNUMERIC(@MaChaine RETURN CAST(@MaChaine AS INT))...
Il serait effectivement souhaitable à terme de séparer les deux informations qui sont stockées dans cette colonne pour pouvoir les traiter de façon indépendante et bien plus efficacement (par exemple avec un index etc...)...
--- Patrice
"jerome" a écrit dans le message de news: %
"Fred BROUARD" wrote in message news:
jerome a écrit : > Bonjour, > > J'ai une colonne alpha numérique qui contient soit des numériques soit
une
> combinaison de données alpha et numériques. > Exemples : > 1 > 111 > 22 > FT323 > WX154 > ... > > Comment puis-je trier ces données pour obtenir > 1 > 22 > 111 > WX154 > FT323 > > Merci > > Il n'y a pas de solution simple à votre problème car votre base viole la première forme normale ! http://sqlpro.developpez.com/cours/standards/#L2.2 restructurez votre base correctement et votre requête deviendra évidente. Une base de données, c'est pas un fichier COBOL !!!
Ben oui je sais bien mais c'est une base que je récupère et, pour l'instant, je ne me vois pas tout restructurer. Une idée quand même pour extraire les données numériques de la colonne alpha ?
Merci
Quelque chose comme (non testé) :
CREATE FUNCTION MaFonction(@MaChaine VARCHAR(10)) RETURNS INT AS BEGIN
DECLARE @Position TINYINT
-- Partir de la fin
SET @Position=LEN(@Chaine)
-- Trouver le dernier nom numérique
WHILE SUBSTRING(@Chaine,@Position,1) BETWEEN '0' AND '9'
SET @Position=@Position-1
-- Retourner le résultat
RETURN RIGHT(@Chaine,LEN(@Chaine)-@Position)
P.S : ajouter aussi une condition d'arrêt ou un test pour convertir
directement la chaine si elle est entièrement numérique (style IF
ISNUMERIC(@MaChaine RETURN CAST(@MaChaine AS INT))...
Il serait effectivement souhaitable à terme de séparer les deux informations
qui sont stockées dans cette colonne pour pouvoir les traiter de façon
indépendante et bien plus efficacement (par exemple avec un index etc...)...
---
Patrice
"jerome" <jerome@hh.fr> a écrit dans le message de news:
%234dsVCGqHHA.1244@TK2MSFTNGP04.phx.gbl...
"Fred BROUARD" <brouardf@club-internet.fr> wrote in message
news:eJVRSvFqHHA.2044@TK2MSFTNGP04.phx.gbl...
jerome a écrit :
> Bonjour,
>
> J'ai une colonne alpha numérique qui contient soit des numériques soit
une
> combinaison de données alpha et numériques.
> Exemples :
> 1
> 111
> 22
> FT323
> WX154
> ...
>
> Comment puis-je trier ces données pour obtenir
> 1
> 22
> 111
> WX154
> FT323
>
> Merci
>
>
Il n'y a pas de solution simple à votre problème car votre base viole la
première forme normale !
http://sqlpro.developpez.com/cours/standards/#L2.2
restructurez votre base correctement et votre requête deviendra évidente.
Une base de données, c'est pas un fichier COBOL !!!
Ben oui je sais bien mais c'est une base que je récupère et, pour
l'instant,
je ne me vois pas tout restructurer.
Une idée quand même pour extraire les données numériques de la colonne
alpha
?
CREATE FUNCTION MaFonction(@MaChaine VARCHAR(10)) RETURNS INT AS BEGIN DECLARE @Position TINYINT -- Partir de la fin SET @Position=LEN(@Chaine) -- Trouver le dernier nom numérique WHILE SUBSTRING(@Chaine,@Position,1) BETWEEN '0' AND '9' SET @Position=@Position-1 -- Retourner le résultat RETURN RIGHT(@Chaine,LEN(@Chaine))
P.S : ajouter aussi une condition d'arrêt ou un test pour convertir directement la chaine si elle est entièrement numérique (style IF ISNUMERIC(@MaChaine RETURN CAST(@MaChaine AS INT))...
Il serait effectivement souhaitable à terme de séparer les deux informations qui sont stockées dans cette colonne pour pouvoir les traiter de façon indépendante et bien plus efficacement (par exemple avec un index etc...)...
--- Patrice
"jerome" a écrit dans le message de news: %
"Fred BROUARD" wrote in message news:
jerome a écrit : > Bonjour, > > J'ai une colonne alpha numérique qui contient soit des numériques soit
une
> combinaison de données alpha et numériques. > Exemples : > 1 > 111 > 22 > FT323 > WX154 > ... > > Comment puis-je trier ces données pour obtenir > 1 > 22 > 111 > WX154 > FT323 > > Merci > > Il n'y a pas de solution simple à votre problème car votre base viole la première forme normale ! http://sqlpro.developpez.com/cours/standards/#L2.2 restructurez votre base correctement et votre requête deviendra évidente. Une base de données, c'est pas un fichier COBOL !!!
Ben oui je sais bien mais c'est une base que je récupère et, pour l'instant, je ne me vois pas tout restructurer. Une idée quand même pour extraire les données numériques de la colonne alpha ?
Merci
jerome
Merci
"Patrice" <http://www.chez.com/scribe/> wrote in message news:
Quelque chose comme (non testé) :
CREATE FUNCTION MaFonction(@MaChaine VARCHAR(10)) RETURNS INT AS BEGIN DECLARE @Position TINYINT -- Partir de la fin SET @Position=LEN(@Chaine) -- Trouver le dernier nom numérique WHILE SUBSTRING(@Chaine,@Position,1) BETWEEN '0' AND '9' SET @Position=@Position-1 -- Retourner le résultat RETURN RIGHT(@Chaine,LEN(@Chaine))
P.S : ajouter aussi une condition d'arrêt ou un test pour convertir directement la chaine si elle est entièrement numérique (style IF ISNUMERIC(@MaChaine RETURN CAST(@MaChaine AS INT))...
Il serait effectivement souhaitable à terme de séparer les deux
informations
qui sont stockées dans cette colonne pour pouvoir les traiter de façon indépendante et bien plus efficacement (par exemple avec un index
etc...)...
--- Patrice
"jerome" a écrit dans le message de news: % > > "Fred BROUARD" wrote in message > news: >> jerome a écrit : >> > Bonjour, >> > >> > J'ai une colonne alpha numérique qui contient soit des numériques
soit
> une >> > combinaison de données alpha et numériques. >> > Exemples : >> > 1 >> > 111 >> > 22 >> > FT323 >> > WX154 >> > ... >> > >> > Comment puis-je trier ces données pour obtenir >> > 1 >> > 22 >> > 111 >> > WX154 >> > FT323 >> > >> > Merci >> > >> > >> Il n'y a pas de solution simple à votre problème car votre base viole
la
>> première forme normale ! >> http://sqlpro.developpez.com/cours/standards/#L2.2 >> restructurez votre base correctement et votre requête deviendra
évidente.
>> Une base de données, c'est pas un fichier COBOL !!! > > Ben oui je sais bien mais c'est une base que je récupère et, pour > l'instant, > je ne me vois pas tout restructurer. > Une idée quand même pour extraire les données numériques de la colonne > alpha > ? > > Merci > >
Merci
"Patrice" <http://www.chez.com/scribe/> wrote in message
news:OuakGiGqHHA.4496@TK2MSFTNGP06.phx.gbl...
Quelque chose comme (non testé) :
CREATE FUNCTION MaFonction(@MaChaine VARCHAR(10)) RETURNS INT AS BEGIN
DECLARE @Position TINYINT
-- Partir de la fin
SET @Position=LEN(@Chaine)
-- Trouver le dernier nom numérique
WHILE SUBSTRING(@Chaine,@Position,1) BETWEEN '0' AND '9'
SET @Position=@Position-1
-- Retourner le résultat
RETURN RIGHT(@Chaine,LEN(@Chaine)-@Position)
P.S : ajouter aussi une condition d'arrêt ou un test pour convertir
directement la chaine si elle est entièrement numérique (style IF
ISNUMERIC(@MaChaine RETURN CAST(@MaChaine AS INT))...
Il serait effectivement souhaitable à terme de séparer les deux
informations
qui sont stockées dans cette colonne pour pouvoir les traiter de façon
indépendante et bien plus efficacement (par exemple avec un index
etc...)...
---
Patrice
"jerome" <jerome@hh.fr> a écrit dans le message de news:
%234dsVCGqHHA.1244@TK2MSFTNGP04.phx.gbl...
>
> "Fred BROUARD" <brouardf@club-internet.fr> wrote in message
> news:eJVRSvFqHHA.2044@TK2MSFTNGP04.phx.gbl...
>> jerome a écrit :
>> > Bonjour,
>> >
>> > J'ai une colonne alpha numérique qui contient soit des numériques
soit
> une
>> > combinaison de données alpha et numériques.
>> > Exemples :
>> > 1
>> > 111
>> > 22
>> > FT323
>> > WX154
>> > ...
>> >
>> > Comment puis-je trier ces données pour obtenir
>> > 1
>> > 22
>> > 111
>> > WX154
>> > FT323
>> >
>> > Merci
>> >
>> >
>> Il n'y a pas de solution simple à votre problème car votre base viole
la
>> première forme normale !
>> http://sqlpro.developpez.com/cours/standards/#L2.2
>> restructurez votre base correctement et votre requête deviendra
évidente.
>> Une base de données, c'est pas un fichier COBOL !!!
>
> Ben oui je sais bien mais c'est une base que je récupère et, pour
> l'instant,
> je ne me vois pas tout restructurer.
> Une idée quand même pour extraire les données numériques de la colonne
> alpha
> ?
>
> Merci
>
>
"Patrice" <http://www.chez.com/scribe/> wrote in message news:
Quelque chose comme (non testé) :
CREATE FUNCTION MaFonction(@MaChaine VARCHAR(10)) RETURNS INT AS BEGIN DECLARE @Position TINYINT -- Partir de la fin SET @Position=LEN(@Chaine) -- Trouver le dernier nom numérique WHILE SUBSTRING(@Chaine,@Position,1) BETWEEN '0' AND '9' SET @Position=@Position-1 -- Retourner le résultat RETURN RIGHT(@Chaine,LEN(@Chaine))
P.S : ajouter aussi une condition d'arrêt ou un test pour convertir directement la chaine si elle est entièrement numérique (style IF ISNUMERIC(@MaChaine RETURN CAST(@MaChaine AS INT))...
Il serait effectivement souhaitable à terme de séparer les deux
informations
qui sont stockées dans cette colonne pour pouvoir les traiter de façon indépendante et bien plus efficacement (par exemple avec un index
etc...)...
--- Patrice
"jerome" a écrit dans le message de news: % > > "Fred BROUARD" wrote in message > news: >> jerome a écrit : >> > Bonjour, >> > >> > J'ai une colonne alpha numérique qui contient soit des numériques
soit
> une >> > combinaison de données alpha et numériques. >> > Exemples : >> > 1 >> > 111 >> > 22 >> > FT323 >> > WX154 >> > ... >> > >> > Comment puis-je trier ces données pour obtenir >> > 1 >> > 22 >> > 111 >> > WX154 >> > FT323 >> > >> > Merci >> > >> > >> Il n'y a pas de solution simple à votre problème car votre base viole
la
>> première forme normale ! >> http://sqlpro.developpez.com/cours/standards/#L2.2 >> restructurez votre base correctement et votre requête deviendra
évidente.
>> Une base de données, c'est pas un fichier COBOL !!! > > Ben oui je sais bien mais c'est une base que je récupère et, pour > l'instant, > je ne me vois pas tout restructurer. > Une idée quand même pour extraire les données numériques de la colonne > alpha > ? > > Merci > >