Correspondance de modèle dans les requêtes SQL avec des caractères génériques

La correspondance de modèle SQL vous permet de rechercher des modèles dans les données si vous ne connaissez pas le mot ou la phrase exact que vous recherchez. Ce genre de SQL La requête utilise des caractères génériques pour correspondre à un modèle, plutôt que de le spécifier exactement. Par exemple, vous pouvez utiliser le caractère générique "C%" pour faire correspondre n'importe quelle chaîne commençant par un C majuscule.

Loupe
Kate Ter Haar / Flickr/CC par 2.0

Utilisation de l'opérateur LIKE

Pour utiliser une expression générique dans une requête SQL, utilisez l'opérateur LIKE dans une clause WHERE et placez le modèle entre guillemets simples.

Utilisation du caractère générique % pour effectuer une recherche simple

Pour rechercher un employé dans votre base de données dont le nom de famille commence par la lettre C, utilisez l'instruction Transact-SQL suivante:

SÉLECTIONNER *
DES employés
WHERE last_name LIKE 'C%'

Omission de motifs à l'aide du mot-clé NOT

Utilisez le mot-clé NOT pour sélectionner les enregistrements qui ne correspondent pas au modèle. Par exemple, cette requête renvoie tous les enregistrements dont le dernier nom ne

instagram viewer
ne pas commencer par C:

SÉLECTIONNER *
DES employés
WHERE last_name PAS COMME 'C%'

Faire correspondre un modèle n'importe où en utilisant le caractère générique % deux fois

Utilisez deux instances du % joker pour correspondre à un modèle particulier n'importe où. Cet exemple renvoie tous les enregistrements qui contiennent un C n'importe où dans le nom de famille:

SÉLECTIONNER *
DES employés
WHERE last_name LIKE '%C%'

Trouver une correspondance de modèle à une position spécifique

Utilisez le _ caractère générique pour renvoyer des données à un emplacement spécifique. Cet exemple ne correspond que si C apparaît à la troisième position de la colonne du nom:

SÉLECTIONNER *
DES employés
WHERE last_name LIKE '_ _C%'

Expressions génériques prises en charge dans Transact SQL

Il existe plusieurs expressions génériques prises en charge par Transact SQL:

  • le % Le caractère générique correspond à zéro ou plusieurs caractères de tout type et peut être utilisé pour définir des caractères génériques à la fois avant et après le modèle. Si vous êtes familier avec la correspondance de modèle DOS, c'est l'équivalent du caractère générique * dans cette syntaxe.
  • le _ Le caractère générique correspond exactement à un caractère de n'importe quel type. C'est l'équivalent du ? caractère générique dans la correspondance de modèle DOS.
  • Spécifiez une liste de caractères en les mettant entre crochets. Par exemple, le caractère générique [aeiou] correspond à n'importe quelle voyelle.
  • Spécifiez une plage de caractères en mettant la plage entre crochets. Par exemple, le caractère générique [un m] correspond à n'importe quelle lettre de la première moitié de l'alphabet.
  • Annulez une plage de caractères en incluant le caractère carat immédiatement à l'intérieur du crochet ouvrant. Par example, [^aeiou] correspond à n'importe quel caractère non vocalique tandis que [^a-m] correspond à tout caractère ne figurant pas dans la première moitié de l'alphabet.

Combinaison de caractères génériques pour des modèles complexes

Combinez ces caractères génériques dans des modèles complexes pour effectuer des requêtes plus avancées. Par exemple, supposons que vous ayez besoin de construire une liste de tous vos employés dont les noms commencent par une lettre de la première moitié de l'alphabet, mais ne ne pas terminer par une voyelle. Vous pouvez utiliser la requête suivante:

SÉLECTIONNER *
DES employés
WHERE last_name LIKE '[a-m]%[^aeiou]'

De même, vous pouvez construire une liste de tous les employés dont le nom de famille comprend exactement quatre caractères en utilisant quatre instances de la _ schéma:

SÉLECTIONNER *
DES employés
WHERE last_name LIKE '____'

Comme vous pouvez le constater, l'utilisation des capacités de correspondance de modèles SQL offre aux utilisateurs de bases de données la possibilité d'aller au-delà des simples requêtes de texte et d'effectuer des opérations de recherche avancées.