Articles

SQLShack (Français)

Posted by admin

Cet article explore les commandes RegEx T-SQL dans SQL Server pour effectuer une recherche de données en utilisant diverses conditions.

Introduction

Nous stocker les données dans plusieurs formats ou types de données dans des tables SQL Server. Supposons que vous ayez une colonne de données qui contient des données de chaîne au format alphanumérique. Nous utilisons comme opérateur logique pour rechercher un caractère spécifique dans la chaîne et récupérer le résultat., Par exemple, dans la table Employee, nous voulons filtrer les résultats et obtenir le seul employé dont le nom commence par le caractère A.

nous utilisons des expressions régulières pour définir des modèles spécifiques dans T-SQL dans un opérateur similaire et filtrer les résultats en fonction de conditions spécifiques. Nous appelons également ces expressions régulières comme des fonctions RegEx T-SQL. Dans cet article, nous utiliserons le terme fonctions RegEx T-SQL pour les expressions régulières.,

nous pouvons avoir plusieurs types d’expressions régulières:

  • RegEx alphabétique
  • regex numérique
  • regex de sensibilité à la casse
  • regex de caractères spéciaux
  • RegEx pour exclure des caractères

pré-requis

dans cet article, nous allons utiliser L’exemple de base de données AdventureWorks., Execute the following query, and we get all product descriptions:

1
2

SELECT
FROM ..;

Let’s explore T-SQL RegEx in the following examples.,

exemple 1: filtrer les résultats pour la description commençant par le caractère a ou l

supposons que nous souhaitions obtenir une description du produit commençant par le caractère a ou L. Nous pouvons utiliser le format % dans la fonction Like.

Exécuter la requête suivante et observez le résultat contient des lignes avec le premier caractère d’Un ou de L:

1
2
3

SELECT
à PARTIR de ..,
où comme ‘ % ‘

exemple 2: filtrer les résultats pour la description avec le premier caractère A et le deuxième caractère L

dans l’exemple précédent, nous avons filtré les résultats pour le caractère de départ A, ou L. supposons que nous voulions les caractères de départ des descriptions al. Nous pouvons utiliser T-SQL RegEx % dans L’opérateur Like.,

1
2
3

SELECT
FROM ..
where like ‘%’

In the output, you can we get only records with first character A and second characters L.

We can specify multiple characters as well to filter records., The following query gives results for starting characters together:

1
2
3

SELECT
FROM ..,
où like ‘%’

Exemple 3: résultats de filtrage pour la description et de départ de caractère entre A et D

Dans l’exemple précédent, nous avons spécifié un particulier du caractère de départ pour filtrer les résultats. Nous pouvons spécifier la plage de caractères en utilisant les fonctions%.,

The following query gives results for description starting character from A and D:

1
2
3

SELECT
FROM ..
where like ‘%’

Similarly, we can specify multiple conditions for each character., Par exemple, ci-dessous la requête ne les recherches suivantes:

  • Le premier caractère doit être Une et D alphabets
  • Le second personnage devrait être à partir de F et de L alphabet
1
2
3

SELECT
à PARTIR de ..,
où like ‘%’

Dans la sortie, vous pouvez voir que les deux jeu de résultat satisfait les deux conditions.

exemple 4: filtrer les résultats pour la description et le caractère de fin entre A et D

dans les exemples précédents, nous avons filtré les données pour les caractères de début. Nous pourrions également filtrer pour le caractère de position finale.

dans les exemples précédents, notez la position de l’opérateur pourcentage ( % ). Nous avons spécifié un pourcentage à la fin des caractères de recherche.,

1
2
3

SELECT
FROM ..
where like ‘%’

In the following query, we changed the position of percentage character at the beginning on search character., Il semble que les personnages à la condition suivante:

  • caractère de Fin doit être à partir de G et S
1
2
3

SELECT
à PARTIR de ..
où like ‘%’

Dans la sortie, nous obtenons le personnage qui répond à nos critères de recherche.,

exemple 5: filtrer les résultats pour la description commençant les lettres AF et terminant le caractère entre S

rendons-le un peu complexe., Nous voulons une recherche en utilisant les conditions suivantes:

  • premier caractère doit être Une (première) et F (seconde)
  • caractère de Fin doit être S

Exécuter la requête suivante, et à la sortie, nous pouvons voir qu’il répond à notre exigence:

1
2
3

SELECT
à PARTIR de ..,
où comme ‘%’

exemple 6: filtrer les résultats pour les lettres de départ de description excluant A à T

dans l’exemple suivant, nous ne vous voulez le premier caractère des lignes de sortie de A à T. Nous pouvons exclure les caractères en utilisant le format dans l’opérateur LIKE.,

1
2
3

SELECT
FROM ..
where like ‘%’

In the output, we do not have any first characters from A to T.,r d’enregistrements en utilisant les conditions suivantes:

  • Le premier caractère doit être de R et S de caractères
  • On peut avoir n’importe quelle combinaison après le premier caractère – %
  • Nous exigeons le caractère P –
  • Il doit être suivi par un ou –
  • Il peut avoir tout autre caractère après le précédent état- %
1
2
3

SELECT
à PARTIR de .,.
où comme ‘%%’

exemple 8: Recherche sensible à la casse en utilisant les fonctions RegEx T-SQL

par défaut, nous n’obtenons pas résultats sensibles à la casse. Par exemple, les requêtes suivantes renvoient le même jeu de résultats:

Nous pouvons effectuer une recherche sensible à la casse en utilisant les deux méthodes suivantes:

  1. paramètre de classement de base de données: chaque base de données dans SQL Server a un classement., Faites un clic droit sur la base de données et dans la page des propriétés, Vous pouvez voir le classement

    Nous avons SQL_Latin1_General_CP1_CI_AS effectue un comportement insensible à la casse pour la base de données. Nous pouvons changer ce classement en classement sensible à la casse. Ce n’est pas une solution simple. Cela peut créer des problèmes pour vos requêtes. Ce n’est pas un moyen recommandé à moins que vous n’ayez explicitement besoin d’un classement sensible à la casse.

    Nous pouvons utiliser le classement des colonnes avec les fonctions RegEx T-SQL pour effectuer une recherche sensible à la casse.,

    1
    2
    3
    4
    5
    6
    7

    Créer une table de Caractères
    (Alphabet char(1)
    )
    Aller
    Insert into Personnages values (‘A’)
    Insert into Personnages values (‘a’)
    Aller

    Dans la table, nous avons la lettre en majuscules et minuscules., If we run the following select statement, it returns both uppercase and lowercase:

    1
    2

    SELECT * from Characters
    where Alphabet like ‘%’

    Suppose we want to filter the uppercase letter in the result., We can use column collation as per the following query:

    1
    2

    select * from Characters
    where Alphabet COLLATE Latin1_General_BIN like ‘%’

    It returns uppercase letter A in the output.,e119a2″>

    de Même, la requête suivante renvoie la lettre minuscule dans la sortie:

    1
    2

    select * from Caractères
    où Alphabet RASSEMBLER Latin1_General_BIN like ‘%’

  2. On peut utiliser T-SQL fonction RegEx pour trouver à la fois des caractères majuscules et minuscules dans la sortie.,

    Nous voulons la sortie suivante:

    • Le premier caractère doit être un caractère en majuscule C
    • Le second caractère doivent être en minuscules caractères h
    • Reste de caractères peut être dans n’importe quelle lettre cas
    1
    2
    3

    SELECT
    à PARTIR de ..,
    où RASSEMBLER Latin1_General_BIN like ‘%’

Exemple 9: L’utilisation de T-SQL Regex pour Trouver le Texte des Lignes qui Contiennent un Nombre

Nous pouvons trouver une ligne qui contient le numéro dans le texte. Par exemple, nous voulons filtrer les résultats avec des lignes qui contiennent le nombre 0 à 9 au début.

exemple 10: utilisez L’Expression régulière T-SQL pour trouver les identifiants de messagerie valides

explorons un scénario pratique de la fonction D’Expression régulière., Nous avons une table client, et il contient l’adresse e-mail du client. Nous voulons identifier l’adresse e-mail valide à partir des données de l’utilisateur. Parfois, les utilisateurs font une erreur de frappe et entrent @@ au lieu du caractère@.

tout d’abord, créez le tableau d’exemple et insérez-y une adresse e-mail dans différents formats.

exécutez l’instruction select suivante avec la fonction RegEx T-SQL et elle élimine les adresses e-mail invalides.,

1
2

Select * from TSQLREGEX where email
LIKE ‘%%%’

We do not have following invalid email address in the list.

  • ABC@@gmail.com
  • ABC.DFG.LKF#@gmail.,com

Conclusion

dans cet article, nous avons exploré les fonctions RegEx T-SQL pour effectuer une recherche en utilisant diverses conditions. Vous devez en être conscient pour effectuer une recherche en fonction d’exigences spécifiques.,

  • auteur
  • messages récents
en tant que formateur certifié MCSA et Microsoft à Gurgaon, en Inde, avec 13 ans d’expérience, Rajendra travaille pour une variété de grandes entreprises en se concentrant sur l’optimisation des performances, la surveillance, la haute disponibilité et les stratégies de reprise après sinistre et la mise en œuvre., Il est l’auteur de centaines d’articles faisant autorité sur SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS/Amazon RDS, Git et les technologies connexes qui ont été consultés par Plus de 10 millions de lecteurs à ce jour.
Il est le créateur de l’une des plus grandes collections en ligne gratuites d’articles sur un seul sujet, avec sa série de 50 parties sur SQL Server toujours sur les groupes de disponibilité. Sur la base de sa contribution à la communauté SQL Server, il a été reconnu par divers prix, y compris le prestigieux « meilleur auteur de l’année » en continu en 2020 et 2021 à SQLShack.,
Raj est toujours intéressé par les nouveaux défis, donc si vous avez besoin d’aide de consultation sur un sujet couvert dans ses écrits, il peut être joint à rajendra.gupta16 @ gmail.,com
voir tous les messages de Rajendra Gupta

derniers messages de Rajendra Gupta (voir tout)
  • délais D’attente de Session dans SQL Server toujours sur les groupes de disponibilité – 8 février 2021
  • exécution mineure et mises à niveau de version majeures pour AWS RDS SQL Server – 29 janvier 2021
  • déploiement d’instances AWS RDS PostgreSQL – 27 janvier 2021

Leave A Comment