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
difficile te te répondre sans une desciption des tables et la requête qui produit ce résultat !!!
Poste comme ceci :
1) Donnez les ordres SQL de création de vos tables (CREATE TABLE) ainsi que les INSERT d'un jeu de données basique afin que tout un chacun puisse reproduire ce que vous voulez faire sur son SGBDR afin de mieux vous aider. Exemple : Code:
2) présentez le résultat que vous voulez voir apparaître sous la forme d'une table Exemple : Code:
-- Le résultat attendu : NOM VILLE NOMBRE ------ ---------- ------ MARTIN PARIS 2 DUPOND STRASBOURG 3 ...
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
news.free.fr a écrit:
Bonjour,
SQL classe les chaînes par leur longueur puis sur la valeur de chaque caractère.
Je souhaite trier selon l'ordre numérique puis alpha à la façon d'un dictionnaire, exemple : 1 2 9 10 11 99 100 123 9999 A A1 A11 A2 B B1 BA
mais ne sais comment faire. Auriez-vous une astuce ou mieux une solution.
Merci d'avance
difficile te te répondre sans une desciption des tables et la requête qui
produit ce résultat !!!
Poste comme ceci :
1) Donnez les ordres SQL de création de vos tables (CREATE TABLE) ainsi que les
INSERT d'un jeu de données basique afin que tout un chacun puisse reproduire ce
que vous voulez faire sur son SGBDR afin de mieux vous aider.
Exemple :
Code:
difficile te te répondre sans une desciption des tables et la requête qui produit ce résultat !!!
Poste comme ceci :
1) Donnez les ordres SQL de création de vos tables (CREATE TABLE) ainsi que les INSERT d'un jeu de données basique afin que tout un chacun puisse reproduire ce que vous voulez faire sur son SGBDR afin de mieux vous aider. Exemple : Code:
2) présentez le résultat que vous voulez voir apparaître sous la forme d'une table Exemple : Code:
-- Le résultat attendu : NOM VILLE NOMBRE ------ ---------- ------ MARTIN PARIS 2 DUPOND STRASBOURG 3 ...
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
news.free.fr a écrit:
Bonjour,
SQL classe les chaînes par leur longueur puis sur la valeur de chaque caractère.
Je souhaite trier selon l'ordre numérique puis alpha à la façon d'un dictionnaire, exemple : 1 2 9 10 11 99 100 123 9999 A A1 A11 A2 B B1 BA
mais ne sais comment faire. Auriez-vous une astuce ou mieux une solution.
Merci d'avance
Philippe T [MS]
Bonjour,
Si j'ai bien compris le problème, de mon coté je format la chaine avec une longueur fixe préfixé par des '0' ou des '9' en fonction de numérique ou pas
SET NOCOUNT ON
DECLARE @MyTable TABLE(MA_VAL nvarchar(10))
INSERT INTO @MyTable(MA_VAL) VALUES('1') INSERT INTO @MyTable(MA_VAL) VALUES('2') INSERT INTO @MyTable(MA_VAL) VALUES('9') INSERT INTO @MyTable(MA_VAL) VALUES('10') INSERT INTO @MyTable(MA_VAL) VALUES('11') INSERT INTO @MyTable(MA_VAL) VALUES('100') INSERT INTO @MyTable(MA_VAL) VALUES('A') INSERT INTO @MyTable(MA_VAL) VALUES('A1') INSERT INTO @MyTable(MA_VAL) VALUES('A11')
SELECT * FROM @MyTable ORDER BY CASE ISNUMERIC(MA_VAL) WHEN 1 THEN REPLICATE('0', 10 - LEN(CONVERT(nvarchar, MA_VAL))) + CONVERT(nvarchar, MA_VAL) ELSE REPLICATE('9', 10 - LEN(CONVERT(nvarchar, MA_VAL))) + CONVERT(nvarchar, MA_VAL) END
---------------------------------------------------------------------- Philippe TROTIN - Microsoft Service France
"news.free.fr" wrote in message news:43171acb$0$31019$
Bonjour,
SQL classe les chaînes par leur longueur puis sur la valeur de chaque caractère.
Je souhaite trier selon l'ordre numérique puis alpha à la façon d'un dictionnaire, exemple : 1 2 9 10 11 99 100 123 9999 A A1 A11 A2 B B1 BA
mais ne sais comment faire. Auriez-vous une astuce ou mieux une solution.
Merci d'avance
Bonjour,
Si j'ai bien compris le problème, de mon coté je format la chaine avec une
longueur fixe préfixé par des '0' ou des '9' en fonction de numérique ou pas
SET NOCOUNT ON
DECLARE @MyTable TABLE(MA_VAL nvarchar(10))
INSERT INTO @MyTable(MA_VAL) VALUES('1')
INSERT INTO @MyTable(MA_VAL) VALUES('2')
INSERT INTO @MyTable(MA_VAL) VALUES('9')
INSERT INTO @MyTable(MA_VAL) VALUES('10')
INSERT INTO @MyTable(MA_VAL) VALUES('11')
INSERT INTO @MyTable(MA_VAL) VALUES('100')
INSERT INTO @MyTable(MA_VAL) VALUES('A')
INSERT INTO @MyTable(MA_VAL) VALUES('A1')
INSERT INTO @MyTable(MA_VAL) VALUES('A11')
SELECT *
FROM @MyTable
ORDER BY CASE ISNUMERIC(MA_VAL)
WHEN 1 THEN REPLICATE('0', 10 - LEN(CONVERT(nvarchar, MA_VAL))) +
CONVERT(nvarchar, MA_VAL)
ELSE REPLICATE('9', 10 - LEN(CONVERT(nvarchar, MA_VAL))) +
CONVERT(nvarchar, MA_VAL)
END
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"news.free.fr" <pqs@pqsweb.com> wrote in message
news:43171acb$0$31019$626a14ce@news.free.fr...
Bonjour,
SQL classe les chaînes par leur longueur puis sur la valeur de chaque
caractère.
Je souhaite trier selon l'ordre numérique puis alpha à la façon d'un
dictionnaire, exemple :
1
2
9
10
11
99
100
123
9999
A
A1
A11
A2
B
B1
BA
mais ne sais comment faire.
Auriez-vous une astuce ou mieux une solution.
Si j'ai bien compris le problème, de mon coté je format la chaine avec une longueur fixe préfixé par des '0' ou des '9' en fonction de numérique ou pas
SET NOCOUNT ON
DECLARE @MyTable TABLE(MA_VAL nvarchar(10))
INSERT INTO @MyTable(MA_VAL) VALUES('1') INSERT INTO @MyTable(MA_VAL) VALUES('2') INSERT INTO @MyTable(MA_VAL) VALUES('9') INSERT INTO @MyTable(MA_VAL) VALUES('10') INSERT INTO @MyTable(MA_VAL) VALUES('11') INSERT INTO @MyTable(MA_VAL) VALUES('100') INSERT INTO @MyTable(MA_VAL) VALUES('A') INSERT INTO @MyTable(MA_VAL) VALUES('A1') INSERT INTO @MyTable(MA_VAL) VALUES('A11')
SELECT * FROM @MyTable ORDER BY CASE ISNUMERIC(MA_VAL) WHEN 1 THEN REPLICATE('0', 10 - LEN(CONVERT(nvarchar, MA_VAL))) + CONVERT(nvarchar, MA_VAL) ELSE REPLICATE('9', 10 - LEN(CONVERT(nvarchar, MA_VAL))) + CONVERT(nvarchar, MA_VAL) END
---------------------------------------------------------------------- Philippe TROTIN - Microsoft Service France
"news.free.fr" wrote in message news:43171acb$0$31019$
Bonjour,
SQL classe les chaînes par leur longueur puis sur la valeur de chaque caractère.
Je souhaite trier selon l'ordre numérique puis alpha à la façon d'un dictionnaire, exemple : 1 2 9 10 11 99 100 123 9999 A A1 A11 A2 B B1 BA
mais ne sais comment faire. Auriez-vous une astuce ou mieux une solution.