Langage de requête structuré (SQL) est un outil remarquablement puissant et qui regorge de fonctionnalités. Une fois que vous avez maîtrisé les commandes SQL les plus importantes, vous pouvez commencer à être un peu plus créatif avec votre SQL. Aujourd'hui, je vais vous montrer tout ce que vous devez savoir sur les chaînes de concaténation SQL.
Il existe de nombreux dialectes SQL différents. Pour tous ces exemples, j'utilise la variante PostgreSQL.
La concaténation signifie joindre deux choses ensemble. Vous l'avez peut-être utilisé dans un langage de programmation pour joindre deux chaînes ensemble. Peut-être avez-vous des variables de prénom et de nom de famille que vous avez réunies en tant que variable de nom complet.
La concaténation est un moyen très utile de combiner deux chaînes en une seule. PHP utilise un point pour joindre des chaînes, alors que JavaScript et jQuery utilisent un signe plus.
La concaténation en SQL fonctionne exactement de la même manière. Vous utilisez un opérateur spécial pour joindre deux choses en une seule. Voici un exemple en Pseudocode :
first_name =Joe
nom_de_famille =Coburn
nom_entier =prénom + nom_de_famille
Dans les langages de programmation, la concaténation facilite la lecture du code. Si votre code doit toujours accéder à deux chaînes, les combiner en une seule facilite la mémorisation et réduit la longueur du code.
Alors que les variables en SQL sont moins courantes (mais sont toujours utilisées), la concaténation est toujours nécessaire pour renvoyer des résultats combinés ou pour manipuler des données.
La concaténation est très facile en SQL. Bien que SQL soit un langage commun, les moteurs de base de données individuels implémentent des fonctionnalités de différentes manières. Bien que tous ces exemples soient dans le dialecte PostgreSQL, il est facile de les traduire en d'autres variantes en recherchant simplement sur le Web "Concaténer
Pour en revenir à notre exemple de nom, voici une sélection de base requête :
SELECT first_name, last_name, email FROM users_table
Rien de complexe ici, alors ajoutons la concaténation :
SELECT first_name || last_name AS full_name, email FROM users_table
Comme vous pouvez le voir, cette concaténation a parfaitement fonctionné, mais il y a un petit problème. Le nom complet résultant a été assemblé exactement comme le produit des deux colonnes -- il devrait y avoir un espace entre les noms !
Heureusement, c'est facile à corriger :il suffit de concaténer un espace entre les deux :
SELECT first_name || ' ' || last_name AS full_name, email FROM users_table
Ce sont des exemples basiques, mais vous devriez voir comment fonctionne la concaténation -- c'est vraiment aussi simple que ça ! L'opérateur pipe (| ) est utilisé deux fois entre les clauses. Votre moteur SQL sait que chaque partie avant et après ce symbole doit être jointe et traitée comme une seule. Attention cependant, si vous utilisez l'opérateur concat mais que vous ne concaténez rien, vous obtiendrez une erreur.
Comme mentionné ci-dessus, ces exemples utilisent la variante PostgreSQL de SQL. D'autres variantes peuvent utiliser un opérateur différent, ou même une fonction spéciale que vous devez appeler. Peu importe comment vous concaténez des chaînes, à condition que vous le fassiez de la manière attendue par votre moteur de base de données.
Maintenant que vous connaissez les bases, examinons quelques exemples détaillés, ainsi que quelques pièges courants.
La plupart des moteurs de base de données réussiront à concaténer un mélange de chaînes et d'entiers, peut-être même des dates. Vous rencontrerez généralement des problèmes lorsque vous essayez de concaténer des types complexes tels que des tableaux :
SELECT first_name || ' ' || nom_famille || ARRAY[123, 456] AS nom_complet, e-mail FROM tables_utilisateurs
Ce code ne fonctionnera pas. Il n'est pas possible de combiner des chaînes avec des objets complexes tels que des tableaux. Si vous réfléchissez à ce que vous devez faire, vous pouvez souvent écrire un code simple qui fonctionne, plutôt qu'un code complexe et fou qui ne s'exécute pas.
Si vous avez bien réfléchi à ce que vous devez faire et que vous n'arrivez toujours pas à faire fonctionner le SQL, avez-vous envisagé d'utiliser un langage de programmation ? En tant que développeur de logiciels travaillant sur du code hérité, je connais la douleur d'essayer de déboguer SQL dans lequel quelqu'un a entassé tant de logique, c'est un miracle qu'il fonctionne du tout - si vous essayez d'écrire de la logique en SQL, passez alors à un langage de programmation (il existe de nombreux langages faciles à apprendre).
La concaténation fonctionne très bien pour où déclarations également :
SELECT first_name, last_name, email FROM users_table WHERE date_of_birth =('DAY' || '/' || 'MONTH' || '/' || 'YEAR'): :date
Il se passe quelques choses ici. Dans cet exemple, JOUR , MOIS , et ANNÉE sont des paramètres transmis depuis un script. Ceux-ci ont peut-être été générés par code ou saisis par un utilisateur. Ceux-ci sont concaténés ensemble, puis convertis en un type de date (en utilisant la syntaxe PostgreSQL cast to date ::date ).
L'utilisation de la concaténation de cette manière vous permet d'enchaîner les différentes parties d'une date, qui peuvent ensuite être traitées comme une "vraie" date, par opposition à une chaîne. N'oubliez pas que cet exemple de base ne protège pas contre l'injection SQL, alors ne l'utilisez pas dans n'importe quel code de production sans le modifier.
Un autre écueil à surveiller est null valeurs (une chaîne nulle est une chaîne vide ou inexistante). Étant donné cette requête :
SELECT first_name || ' ' || NULL AS nom_complet, email FROM tables_utilisateurs
Cette requête échoue silencieusement. Cela est dû à la façon dont la concaténation est codée en interne sur votre moteur de base de données. Vous ne rencontrerez peut-être pas toujours ce problème, mais il s'agit d'un phénomène assez courant.
Si vous pensez que les données renvoyées par votre requête peuvent être nulles, vous devrez utiliser un coalesce . Coalesce peut à peu près être considéré comme "si ceci est nul, remplacez-le par cette autre chaîne ou colonne":
SELECT first_name || ' ' || COALESCE(NULL, 'ERROR NULL DATA') AS full_name, email FROM users_table
Maintenant que vous savez utiliser la concaténation en SQL, qu'allez-vous en faire ? Allez-vous créer un site Web et l'animer avec SQL ? Ou peut-être avez-vous besoin d'un générateur de site statique pour une approche plus simple de la création de sites Web.
Quoi que vous fassiez, faites-le nous savoir dans les commentaires ci-dessous !