Comment concaténer deux colonnes dans une requête DB2?
La fonction DB2 CONCAT combinera deux expressions distinctes pour former une expression de chaîne unique.
Vous pouvez également combiner deux expressions distinctes pour former une seule expression de chaîne en utilisant ‘||’ notation (double tuyau).
Concaténation : Il s’agit de joindre des valeurs ensemble (en les ajoutant les unes aux autres) pour former une seule valeur longue. Dans les instructions SQL SELECT, vous pouvez concaténer des colonnes à l’aide d’un opérateur spécial “||” ou en utilisant la fonction CONCAT.
Syntaxe 1 : Utilisation des champs de la base de données
SELECT CONCAT(champ_1, champ_2) FROM nom_table ;
ou
SELECT champ_1 || champ_2 FROM nom_table ;
Syntaxe 2 : Utilisation d’expressions de chaîne
SELECT CONCAT(chaîne_1, chaîne_2) FROM nom_table ;
ou
SELECT chaîne_1 || chaîne_2 FROM nom_table ;
Syntaxe 3 : Utilisation des champs de base de données et des expressions de chaîne
SELECT CONCAT(chaîne_1, chaîne_2) FROM nom_table ;
ou
SELECT chaîne_1 || chaîne_2 FROM nom_table ;
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2.
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
Composants
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
STYLO
Papeterie
7.45
10
74,50
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,00
Exemple 1 : Utilisation de || Opérateur
SELECT Nom_Produit || ' - ' || Categorie AS ProduitType
FROM Produit ;
Voici la liste des fonctions de manipulation de date et d’heure couramment utilisées :
Fonction
La description
Exemple
CHAR
Renvoie une représentation sous forme de chaîne de son premier argument.
CHAR(client_embauchedate,États-Unis)
DAYS
Renvoie une représentation entière de son argument.
DAYS(‘2008-01-01’)
YEAR
Renvoie la partie année de son argument
YEAR(client_embauchedate)
MONTH
Renvoie la partie mois de son argument
MONTH(client_embauche)
DAY
Renvoie la partie jour de son argument
DAY(client_embauchedate)
HOUR
Renvoie la partie heure de son argument
HOUR(CURRENT TIME)
MINUTE
Renvoie la partie minute de son argument
MINUTES (CURRENT TIME)
SECOND
Renvoie la partie minute de son argument
SECOND(CURRENT TIME)
MICROSECOND
Renvoie la partie microseconde de son argument
MICROSECOND(CURRENT TIMESTAMP)
DATE
Renvoie la date dérivée de son argument
DATE(‘2008-01-01’)
TIME
Renvoie le temps dérivé de son argument
TIME(’13:00:00′)
TIMESTAMP
Renvoie timestamp dérivé de son argument
TIMESTAMP(CURRENT DATE)
Voyons les exemples ci-dessous,
Exemple 1:
Comment obtenir la date, l’heure et l’horodatage actuels ?
SELECT current date FROM sysibm.sysdummy1;
SELECT current time FROM sysibm.sysdummy1;
SELECT current timestamp FROM sysibm.sysdummy1;
Exemple 2 :
Comment obtenir l’année, le mois, le jour, l’heure, les minutes, les secondes et les microsecondes à partir de timestamp actuel ?
SELECT YEAR (current timestamp) FROM sysibm.sysdummy1;
SELECT MONTH (current timestamp) FROM sysibm.sysdummy1;
SELECT DATE (current timestamp) FROM sysibm.sysdummy1;
SELECT TIME (current timestamp) FROM sysibm.sysdummy1;
SELECT DAY (current timestamp) FROM sysibm.sysdummy1;
SELECT HOUR (current timestamp) FROM sysibm.sysdummy1;
SELECT MINUTE (current timestamp) FROM sysibm.sysdummy1;
SELECT SECOND (current timestamp) FROM sysibm.sysdummy1;
SELECT MICROSECOND (current timestamp) FROM sysibm.sysdummy1;
Exemple 3 :
Comment effectuer des calculs de date et d’heure ?
SELECT current date + 2 YEAR FROM sysibm.sysdummy1;
SELECT current date + 1 YEARS + 10 MONTHS FROM sysibm.sysdummy1;
SELECT current date + 1 YEARS + 5 MONTHS + 10 DAYS FROM sysibm.sysdummy1;
SELECT current time + 5 HOURS ‑ 3 MINUTES + 10 SECONDS FROM sysibm.sysdummy1;
Exemple 4 :
Comment trouver le nombre de jours entre deux dates, vous pouvez soustraire des dates comme ci-dessous :
SELECT days (current date) ‑ days (date('1990‑09-02')) FROM sysibm.sysdummy1;
Exemple 5 :
Si vous souhaitez concaténer des valeurs de date ou d’heure avec un autre texte, vous devez d’abord convertir la valeur en une chaîne de caractères. Pour ce faire, vous pouvez simplement utiliser la fonction CHAR() :
SELECT "Current Date -" || char(current date) FROM sysibm.sysdummy1;
SELECT "Current Time -" || char(current time) FROM sysibm.sysdummy1;
SELECT "Current Date with 12 hours -" char(current date + 10 hours) FROM sysibm.sysdummy1;
Exemple 6 :
Si vous souhaitez convertir une chaîne de caractères en une valeur de date ou d’heure, vous pouvez utiliser comme ci-dessous :
SELECT TIMESTAMP ('1990‑09‑02‑12.00.00.000000') FROM sysibm.sysdummy1;
SELECT TIMESTAMP ('1990‑09‑02 12:00:00') FROM sysibm.sysdummy1;
SELECT DATE ('1990‑09‑02') FROM sysibm.sysdummy1;
SELECT DATE ('02/09/1990') FROM sysibm.sysdummy1;
SELECT TIME ('10:00:00') FROM sysibm.sysdummy1;
SELECT TIME ('10.00.00') FROM sysibm.sysdummy1;
Exemple 7 :
Comment changer le format date/heure ? Voyons le formatage de la date dans différents formats.
SELECT
CHAR(DATE (CURRENT TIMESTAMP),ISO) AS date_en_iso,
CHAR(DATE (CURRENT TIMESTAMP),USA) AS date_en_usa,
CHAR(DATE (CURRENT TIMESTAMP),EUR) AS date_en_eur,
CHAR(DATE (CURRENT TIMESTAMP),JIS) AS date_en_jis
FROM sysibm.sysdummy1;
Résultat:
Nom de colonne
Valeur
date_en_iso
2022-09-02
date_en_usa
2022/09/02
date_en_eur
2022.09.02
date_en_jis
2022.09.02
Exemple 8 :
Voyons comment convertir le format de date à l’aide de la fonction VARCHAR_FORMAT.
SELECT
VARCHAR_FORMAT(CURRENT TIMESTAMP,'YYYY-MM-DD') AS VCHAR_FORMATE,
DATE(CURRENT TIMESTAMP) AS DATE_VALEUR
FROM sysibm.sysdummy1;
Résultat:
VCHAR_FORMATE
DATE_VALEUR
2013-04-11
04/11/2013
Exemple 9 :
L’instruction SQL suivante montre comment utiliser la fonction VARCHAR_FORMAT dans la clause where.
SELECT * FROM Employe_table
WHERE VARCHAR_FORMAT (date_col,'YYYY-MM-DD') = '1990-09-02'
Les autres fonctions importantes de date et d’heure sont les suivantes :
DAYNAME : renvoie une chaîne de caractères à casse mixte contenant le nom du jour (par exemple, vendredi) pour la partie jour de l’argument.
DAYOFWEEK : renvoie le jour de la semaine dans l’argument sous la forme d’une valeur entière comprise entre 1 et 7, où 1 représente le dimanche.
DAYOFWEEK_ISO : renvoie le jour de la semaine dans l’argument sous la forme d’une valeur entière comprise entre 1 et 7, où 1 représente le lundi.
DAYOFYEAR : renvoie le jour de l’année dans l’argument sous la forme d’une valeur entière comprise entre 1 et 366.
JULIAN_DAY : renvoie une valeur entière représentant le nombre de jours entre le 1er janvier 4712 av. J.-C. (le début du calendrier julien) et la valeur de date spécifiée dans l’argument.
MIDNIGHT_SECONDS : renvoie une valeur entière comprise entre 0 et 86 400 représentant le nombre de secondes entre minuit et la valeur d’heure spécifiée dans l’argument.
MONTHNAME : renvoie une chaîne de caractères à casse mixte contenant le nom du mois (par exemple, janvier) pour la partie mois de l’argument.
TIMESTAMP_ISO : renvoie une valeur d’horodatage basée sur la date, l’heure ou l’argument d’horodatage.
TIMESTAMP_FORMAT : renvoie un horodatage à partir d’une chaîne de caractères qui a été interprétée à l’aide d’un modèle de caractères.
TIMESTAMPDIFF : renvoie une estimation du nombre d’intervalles du type défini par le premier argument, basé sur la différence entre deux horodatages.
TO_CHAR : renvoie une représentation sous forme de caractères d’un horodatage qui a été formaté à l’aide d’un modèle de caractères. TO_CHAR est un synonyme de VARCHAR_FORMAT.
TO_DATE : renvoie un horodatage à partir d’une chaîne de caractères qui a été interprétée à l’aide d’un modèle de caractères. TO_DATE est un synonyme de TIMESTAMP_FORMAT.
SEMAINE : Renvoie la semaine de l’année de l’argument sous la forme d’une valeur entière comprise entre 1 et 54. La semaine commence par le dimanche.
WEEK_ISO : renvoie la semaine de l’année de l’argument sous la forme d’une valeur entière comprise entre 1 et 53.
Un caractère générique est utilisé pour remplacer un ou plusieurs caractères dans une chaîne.
Les caractères génériques sont utilisés avec l’opérateur SQL LIKE. L’opérateur LIKE est utilisé dans une clause WHERE pour rechercher un modèle spécifié dans une colonne.
Utilisez les caractères génériques suivants pour rechercher et répertorier les objets DB2 :
_ (trait de soulignement) correspond à n’importe quel caractère unique.
% (signe de pourcentage) ou * (astérisque) correspond à une chaîne de zéro caractère ou plus.
Les caractères génériques peuvent également être utilisés dans des combinaisons.
Voici quelques exemples montrant différents opérateurs LIKE avec les caractères génériques ‘%’ et ‘_’ :
Opérateur LIKE
La description
WHERE Nom_Etudiant LIKE ‘s%’
Recherche toutes les valeurs qui commencent par “s”
WHERE Nom_Etudiant LIKE ‘%i’
Recherche toutes les valeurs qui se terminent par “i”
WHERE Nom_Etudiant LIKE ‘%sp%’
Trouve toutes les valeurs qui ont “sp” dans n’importe quelle position
WHERE Nom_Etudiant LIKE ‘_v%’
Trouve toutes les valeurs qui ont “v” en deuxième position
WHERE Nom_Etudiant LIKE ‘s_%_%’
Recherche toutes les valeurs commençant par “s” et comportant au moins 3 caractères
WHERE Nom_Etudiant LIKE ‘s%p’
Recherche toutes les valeurs qui commencent par “s” et se terminent par “p”
Le prédicat suivant est vrai lorsque la chaîne à tester dans NAME a la valeur SMITH, NESMITH, SMITHSON ou NESMITHY. Ce n’est pas vrai lorsque la chaîne a la valeur SMYTHE :
Nom_Etudiant LIKE '%SMITH%'
Les deux prédicats suivants sont équivalents ; trois des signes à quatre pour cent du premier prédicat sont redondants.
Nom_Etudiant LIKE 'SP%%%%AN'
Nom_Etudiant LIKE 'SP%AN'
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2.
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
7.45
10
74,50
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,00
Exemple 1 : utilisation du caractère générique %
L’instruction SQL suivante sélectionne tous les produits avec une catégorie commençant par “Acc”:
SELECT * FROM Produit
WHERE Categorie LIKE 'Acc%' ;
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7003
Clavier
Accessoires
36.00
33
1 118,00
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,00
Exemple 2 : utilisation du caractère générique %
L’instruction SQL suivante sélectionne tous les produits avec une catégorie contenant le modèle “oir”:
SELECT * FROM Produit
WHERE Categorie LIKE '%oir%' ;
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7003
Clavier
Accessoires
36.00
33
1 118,00
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,00
Exemple 3 : Utilisation du caractère générique _
L’instruction SQL suivante sélectionne tous les produits avec une catégorie commençant par n’importe quel caractère, suivi de “élos” :
SELECT * FROM Produit
WHERE Categorie LIKE '_élos' ;
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur totale
7005
VTT
vélos
1 200
Exemple 4 : Utilisation du caractère générique _
L’instruction SQL suivante sélectionne tous les produits avec une catégorie commençant par “Accessoire” et se terminant par n’importe quel caractère.
SELECT * FROM Produit
WHERE Categorie LIKE 'Accessoire_' ;
On peut limiter le nombre de résultat avec l’aide de la clause SQL SELECT LIMIT.
Comment limiter les résultats des requêtes pour les bases de données DB2 ?
Il existe deux façons de limiter le résultat.
LIMIT / OFFSET
FETCH FIRST
Pourquoi avons-nous besoin de limiter les résultats de la requête ?
Supposons que vous écriviez une application qui nécessite des informations uniquement sur les 10 étudiants ayant obtenu les notes totales les plus élevées. Pour renvoyer uniquement les lignes de la table Students pour ces 20 étudiants, cela peut être réalisé par la clause Fetch First ou Limit.
De plus, cette clause est utile sur les grandes tables avec des milliers d’enregistrements. Le renvoi d’un grand nombre d’enregistrements peut avoir un impact sur les performances.
Clause DB2 LIMIT :
La clause LIMIT permet de limiter le nombre de lignes renvoyées par la requête.
Syntaxe:
SELECT select_list FROM nom_table
LIMIT n [OFFSET m];
Où,
‘m’ est le nombre de lignes à ignorer avant de renvoyer les n lignes.
‘n’ est le nombre de lignes à renvoyer.
Vous pouvez également écrire la syntaxe LIMIT comme ci-dessous,
LIMITE m, n ;
Cette syntaxe représente le saut de m lignes et le renvoi des n lignes suivantes à partir du jeu de résultats.
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2.
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
STYLO
7.45
10
74,50
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,00
Exemple 1:
Utilisation de la syntaxe LIMIT pour récupérer les 4 premières lignes d’une table “Produit”.
SELECT *
FROM Produit
LIMIT 4;
Résultat :
ID-Produit
Nom-Produit
Categorie
Pris
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
Exemple 2 :
Pour ignorer les 2 premiers produits et retourner les 3 produits suivants, nous utilisons la clause LIMIT OFFSET comme suit :
L’instruction UPDATE met à jour les valeurs des colonnes spécifiées dans les lignes d’une table.
Il permet de modifier les enregistrements existants dans une table.
UPDATE nom_table
SET colonne1 = valeur1, colonne2 = valeur2, ...
WHERE condition ;
Soyez prudent lorsque vous mettez à jour un enregistrement dans une table. Avez-vous remarqué la clause WHERE dans l’instruction UPDATE ? La clause WHERE spécifie les enregistrements qui doivent être mis à jour. Si vous omettez la clause WHERE, tous les enregistrements de la table seront mis à jour.
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2.
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
7.45
10
74,50
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,00
Exemple 1 : Mise à jour d’une seule ligne
L’instruction SQL suivante met à jour le premier ID_Produit (ID_Produit = 7001) avec un nouveau Nom_Produit et Stock.
UPDATE Produit
SET Nom_Produit = 'Clé USB', Stock = 30
WHERE ID_Produit = 7001;
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Clé USB
Accessoires
75,00
30
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
7.45
10
74,50
7007
Lecteur CD
Accessoires
75,00
7008
Micro
Accessoires
75,00
Exemple 2 : mise à jour de plusieurs lignes
L’instruction SQL suivante mettra à jour Nom_Produit en ‘Clé USB’ pour tous les enregistrements où Categorie est ‘Accessoires’.
UPDATE Produit
SET Nom_Produit = 'Clé USB'
WHERE Categorie = 'Accessories';
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Clé USB
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clé USB
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
7.45
10
74,50
7007
Clé USB
Accessoires
75,00
7008
Clé USB
Accessoires
75,00
Des astuces:
Si vous omettez la clause WHERE, TOUS les enregistrements seront mis à jour. voyons un exemple ci-dessous,
La requête SQL ci-dessous est identique à l’exemple 2, mais nous avons omis la clause WHERE.
UPDATE Produit
SET Nom_Produit = 'Clé USB'
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Clé USB
Accessoires
75,00
7002
Clé USB
65,00
20
1 300
7003
Clé USB
Accessoires
36.00
33
1 118,00
7004
Clé USB
Composants
23.50
16
376,00
7005
Clé USB
vélos
1 200
7006
Clé USB
7.45
10
74,50
7007
Clé USB
Accessoires
75,00
7008
Clé USB
Accessoires
75,00
TOUS les enregistrements seront mis à jour avec Nom_Produit est ‘Clé USB’. Soyez donc prudent lors de la mise à jour des enregistrements.
L’instruction DELETE supprime les lignes d’une table.
Syntaxe:
DELETE FROM nom_table WHERE condition ;
Remarque : S’il n’y a pas de clause « where » dans l’instruction Delete, SQL supprimera toutes les données de la table. Vous devez donc être très prudent lors de l’exécution de l’instruction Delete et vous assurer qu’il existe une clause Where.
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2 :
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
7.45
10
74,50
Exemple 1 : supprimer un enregistrement
Supprimez ‘ID_Produit’ 7003 de la table ‘Produit’.
DELETE FROM Produit WHERE ID_Product = ‘7003’;
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
7.45
10
74,50
Exemple 2 : Supprimer tous les enregistrements
Supprimez tous les départements de la table ‘Produit’ (c’est-à-dire videz la table).
L’instruction SQL suivante supprime toutes les lignes de la table “Produit”, sans supprimer la table.
L’instruction SELECT est utilisée pour récupérer des données d’une base de données.
Pour utiliser SELECT, au minimum, spécifiez deux éléments d’information, ce que vous voulez sélectionner et d’où vous voulez le sélectionner.
Syntaxe:
SELECT colonne1, colonne2, ...
FROM nom_table ;
Ici, colonne1, colonne2, … sont les noms de champ de la table à partir de laquelle vous souhaitez sélectionner des données. Si vous souhaitez sélectionner tous les champs disponibles dans le tableau, utilisez la syntaxe suivante :
SELECT * FROM nom_table ;
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2.
ID-produit
Nom-Produit
Catégorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
Roue
vélos
1 200
7006
STYLO
7.45
10
74,50
Exemple 1 : Récupération Simple
SELECT Nom-Produit FROM Produit ;
Cette instruction SELECT récupère une seule colonne appelée Nom-Produit à partir de la table Product.
Résultat:
Nom-Produit
Souris
Disque dur
Clavier
RAM
Roue
STYLO
Exemple 2 : Récupération de plusieurs colonnes
Pour récupérer plusieurs colonnes d’une table, plusieurs noms de colonne doivent être spécifiés après le mot-clé SELECT et chaque colonne doit être séparée par une virgule.
SELECT ID-Produit, Nom-Produit, Prix FROM Produit ;
Cette instruction SELECT récupère les données de plusieurs colonnes de la table Produit.
Résultat:
ID-Produit
Nom-Produit
Prix
7001
Souris
75,00
7002
Disque dur
65,00
7003
Clavier
36.00
7004
RAM
23.50
7005
Roue
1 200
7006
STYLO
7.45
Exemple 3 : Récupération de toutes les colonnes
En plus de pouvoir spécifier les colonnes souhaitées (une ou plusieurs, comme vu précédemment), les instructions SELECT peuvent également demander toutes les colonnes sans avoir à les répertorier individuellement. Pour ce faire, utilisez le caractère générique astérisque (*) à la place des noms de colonne réels, comme suit.
Pour trier explicitement les données extraites à l’aide d’une instruction SELECT, la clause ORDER BY est utilisée.
Le mot-clé ORDER BY trie les enregistrements par ordre croissant par défaut. Pour trier les enregistrements par ordre décroissant, utilisez le mot-clé DESC.
Syntaxe:
SELECT colonne1, colonne2, ...
FROM nom_table
ORDER BY colonne1, colonne2, ... ASC|DESC;
Base de données DB2 :
Vous trouverez ci-dessous une sélection de la table “Product” de la base de données DB2.
ID-Produit
Nom-Produit
Categorie
Prix
Stock
Valeur-Totale
7001
Souris
Accessoires
75,00
7002
Disque dur
Accessoires
65,00
20
1 300
7003
Clavier
Accessoires
36.00
33
1 118,00
7004
RAM
Composants
23.50
16
376,00
7005
VTT
vélos
1 200
7006
Stylo
Papeterie
7.45
dix
74,50
7007
Clé USB
Accessoires
65,00
20
1 300
Exemple 1 : tri par colonnes simples
SELECT ID-Produit, Nom-Produit, Categorie, Prix
FROM Produit
ORDER BY Prix;
Cette instruction trie les données par ordre alphabétique dans l’ordre croissant de la colonne Prix.
Résultat:
ID-Produit
Nom-Produit
Categorie
Prix
7006
Stylo
Papeterie
7.45
7004
RAM
Composants
23.50
7003
Clavier
Accessoires
36.00
7002
Disque dur
Accessoires
65,00
7007
Clé USB
Accessoires
65,00
7001
Souris
Accessoires
75,00
7005
VTT
vélos
1 200
Exemple 2 : tri sur plusieurs colonnes
Pour trier sur plusieurs colonnes, spécifiez simplement les noms de colonne séparés par des virgules dans la clause ORDER BY.
SELECT ID-Produit, Nom-Produit, Prix
FROM Produit
ORDER BY Prix, Nom-Produit;
Ce code récupère trois colonnes et trie les résultats par deux d’entre eux, d’abord par Price puis par ProductName (c’est-à-dire si plusieurs enregistrements sont présents avec le même prix, ces enregistrements seront à nouveau triés en fonction du nom).
Résultat:
ID-Produit
Nom-Produit
Prix
7006
Stylo
7.45
7004
RAM
23.50
7003
Clavier
36.00
7002
Disque dur
65,00
7007
Clé USB
65,00
7001
Souris
75,00
7005
VTT
1 200
Exemple 3 : Trier par position de colonne
ORDER BY prend également en charge le classement spécifié par la position relative des colonnes.
SELECT ID-Produit, Prix, Nom-Produit
FROM Produit
ORDER BY 2, 3;
ORDER BY 2 signifie trier par la deuxième colonne de la liste SELECT, la colonne Prix. ORDER BY 2, 3 signifie trier par Price puis par ProductName.
Résultat:
ID-Produit
Prix
Nom-Produit
7006
7.45
Stylo
7004
23.50
RAM
7003
36.00
Clavier
7002
65,00
Disque dur
7007
65,00
Clé USB
7001
75,00
Souris
7005
1 200
VTT
Exemple 4 : Spécification du sens de tri
Le tri des données ne se limite pas aux ordres de tri croissants (de A à Z). Bien qu’il s’agisse de l’ordre de tri par défaut, la clause ORDER BY peut également être utilisée pour trier par ordre décroissant (de Z à A).
Pour trier par ordre décroissant, le mot-clé DESC doit être spécifié.
SELECT ProductID, ProductName, Price FROM Product ORDER BY Price DESC ;
Ce SQL trie les produits par prix dans l’ordre décroissant (produit le plus cher présent en premier).