Contacts

Sql ajoute des caractères au début d'une chaîne. Fonctions de chaîne SQL - Exemples d'utilisation. Fonctions symboliques en langage sql

Nous continuons à étudier le langage de requête SQL, et aujourd'hui nous parlerons de Fonctions de chaîne SQL. Nous examinerons les fonctions de chaîne de base et couramment utilisées telles que : INFERIEUR, LTRIM, REMPLACER et d'autres, nous considérerons tout, bien sûr, avec des exemples.

SELECT nom || table AS FIO FROM

Ou pour séparer avec un espace entrer

SELECT nom || " " || table AS FIO FROM

celles. deux barres verticales combinent deux colonnes en une seule, et pour les séparer par un espace, je mets un espace entre elles ( n'importe quel caractère peut être utilisé, tel que tiret ou deux-points) en apostrophes et combiné également avec deux barres verticales ( Transact-SQL utilise + au lieu de deux barres verticales).

Fonction INITCAP

Vient ensuite une fonction très utile, INITCAP- qui renvoie une valeur dans une chaîne dans laquelle chaque mot commence par une majuscule et se poursuit par des minuscules. Cela est nécessaire si vous ne suivez pas les règles de remplissage dans l'une ou l'autre colonne et afin d'afficher le tout sous une belle forme, vous pouvez utiliser cette fonction, par exemple, dans votre table, il y a des enregistrements dans la colonne du nom du formulaire suivant : IVAN Ivanov ou Peter Petrov, vous utilisez cette fonction.

SELECT INITCAP (nom) AS FIO FROM table

Et vous l'obtenez comme ça.

Fonction SUPÉRIEURE

Une fonction similaire, renvoyant uniquement tous les caractères en majuscules, est PLUS HAUT.

SELECT UPPER (nom) AS FIO FROM table

  • nom – nom de la colonne ;
  • 20 - nombre de caractères ( longueur de champ);
  • '-' est le caractère à remplir au nombre de caractères requis.

Fonction RPA

Examinons la fonction inverse. RPA- l'action et la syntaxe sont les mêmes que pour LPAD, seuls les caractères de droite sont complétés ( en LPAD à gauche).

SELECT RPAD (nom, 20, "-") AS nom FROM table

Ivan—————-
Sergueï -----

Fonction LTRIM

Vient ensuite aussi dans certains cas une fonction utile, LTRIM- cette fonction supprime les caractères les plus à gauche que vous spécifiez. Par exemple, vous avez une colonne "ville" dans votre base de données, dans laquelle la ville est indiquée comme "Moscou", et il y a aussi des villes qui sont simplement indiquées comme "Moscou". Mais vous devez afficher le rapport uniquement sous la forme "Moscou" sans "ville", mais comment faire s'il y a tel ou tel? Vous spécifiez simplement une sorte de motif "g". et si les caractères les plus à gauche commencent par "r", alors ces caractères ne seront tout simplement pas sortis.

SELECT LTRIM (ville) AS gorod FROM table

Cette fonction regarde les caractères à gauche, s'il n'y a pas de caractères selon le modèle au début de la ligne, alors elle renvoie la valeur d'origine de la cellule, et s'il y en a, elle les supprime.

Fonction RTRIM

Aussi, regardons tout de suite la fonction inverse. RTRIM– identique à LTRIM, seuls les caractères sont recherchés à droite.

Noter! Dans Transact-SQL, les fonctions RTRIM et LTRIM suppriment les espaces à droite et à gauche, respectivement.

Fonction REMPLACER

Considérons maintenant une fonction aussi intéressante que REMPLACER- il renvoie une chaîne dans laquelle toutes les correspondances de caractères sont remplacées par vos caractères que vous spécifiez. À quoi peut-il servir, par exemple, vous avez des colonnes dans la base de données dans lesquelles il y a des caractères de séparation, disons "/". Par exemple, Ivan / Ivanov, et vous souhaitez afficher Ivan-Ivanov, puis écrivez

SELECT REMPLACER (nom, "/", "-") FROM table

et vous aurez une substitution de caractère.

Cette fonction remplace uniquement la correspondance complète des caractères, si par exemple vous spécifiez "-", c'est-à-dire trois tirets, il ne recherchera que trois tirets et ne remplacera pas chaque tiret individuel, contrairement à la fonction suivante.

Fonction TRADUIRE

TRADUIRE est une fonction de chaîne qui remplace tous les caractères d'une chaîne par les caractères que vous spécifiez. D'après le nom de la fonction, vous pouvez deviner qu'il s'agit d'un saut de ligne complet. La différence entre cette fonction et REPLACE est qu'elle remplace chaque caractère que vous spécifiez, c'est-à-dire vous avez trois caractères, disons abc et en utilisant TRANSLATE vous pouvez le remplacer par abc donc vous avez a=a, b=b, c=c et par ce principe toutes les correspondances de caractères seront remplacées. Et si vous avez remplacé à l'aide de REPLACE, vous ne recherchiez qu'une correspondance complète des caractères abc situés dans une rangée.

Fonction SUBSTR

SUBSTR- cette fonction renvoie uniquement la plage de caractères que vous spécifiez. En d'autres termes, disons une chaîne de 10 caractères, mais vous n'avez pas besoin des dix, mais disons que vous n'avez besoin que de 3 à 8 ( troisième à huitième). Avec cette fonction, vous pouvez facilement le faire. Par exemple, vous avez un identifiant de longueur fixe dans la base de données (comme : AA-BB-55-66-CC) et chaque combinaison de caractères signifie quelque chose. Et à un beau moment on vous a dit de n'afficher que 2 et 3 combinaisons de caractères, pour cela vous écrivez une requête de la forme suivante.

SELECT SUBSTR (ident, "4", "8") FROM table

celles. nous sortons tous les caractères de 4 à 8, et après cette requête vous obtiendrez ceci :

Fonction LENGTH - longueur de la chaîne

La fonction suivante peut également être utile, c'est LONGUEUR- qui compte simplement le nombre de caractères dans une chaîne. Par exemple, vous devez savoir combien de caractères dans chaque cellule de la colonne "nom" est autorisé, le tableau est le suivant.

SELECT LENGTH (nom) FROM table

après cette demande, vous obtiendrez ceci.

4
6
7

Nous sommes ici avec vous et avons examiné les principales fonctions de chaîne SQL. Dans les articles suivants, nous poursuivrons notre étude de SQL.

Fonctions de chaîne SQL

Ce groupe de fonctions vous permet de manipuler du texte. Il existe de nombreuses fonctions de chaîne, nous allons considérer les plus courantes.
  • CONCAT(str1,str2...) Renvoie une chaîne créée en concaténant des arguments (les arguments sont spécifiés entre parenthèses - str1,str2...). Par exemple, notre table Fournisseurs a une colonne Ville et une colonne Adresse. Disons que nous voulons que l'adresse et la ville soient dans la même colonne dans le tableau résultant, c'est-à-dire nous voulons combiner les données de deux colonnes en une seule. Pour ce faire, nous utiliserons la fonction de chaîne CONCAT(), et comme arguments nous spécifierons les noms des colonnes combinées - ville et adresse :

    SELECT CONCAT(ville, adresse) FROM fournisseurs ;


    Notez que la fusion s'est faite sans séparation, ce qui n'est pas très lisible. Modifions notre requête afin qu'il y ait un espace entre les colonnes jointes :

    SELECT CONCAT(ville, " ", adresse) FROM fournisseurs ;


    Comme vous pouvez le voir, un espace est également considéré comme un argument et est spécifié séparé par des virgules. S'il y avait plus de colonnes à combiner, il serait irrationnel de spécifier des espaces à chaque fois. Dans ce cas, on pourrait utiliser la fonction de chaîne CONCAT_WS(séparateur, str1,str2...), qui place un séparateur entre les chaînes à concaténer (le séparateur est spécifié comme premier argument). Notre requête ressemblerait alors à ceci :

    SELECT CONCAT_WS(" ", ville, adresse) FROM fournisseurs ;

    Le résultat n'a pas changé de manière externe, mais si nous combinions 3 ou 4 colonnes, le code serait considérablement réduit.


  • INSERT(str, pos, len, new_str) Renvoie la chaîne str dans laquelle la sous-chaîne commençant à la position pos et ayant une longueur de len caractères a été remplacée par la sous-chaîne new_str. Supposons que l'on décide dans la colonne Adresse (adresse) de ne pas afficher les 3 premiers caractères (abréviations rue, etc.), alors on les remplacera par des espaces :

    SELECT INSERT(adresse, 1, 3, " ") FROM vendeurs ;


    C'est-à-dire que trois caractères, à partir du premier, sont remplacés par trois espaces.


  • LPAD(str, len, dop_str) Renvoie la chaîne str complétée à gauche avec dop_str jusqu'à la longueur len. Disons que nous voulons que les villes fournisseurs soient affichées à droite, avec des points remplissant l'espace vide :

    SELECT LPAD(ville, 15, ".") FROM fournisseurs ;



  • RPAD(str, len, dop_str) Renvoie la chaîne str complétée à droite avec dop_str de longueur len. Supposons que nous voulions que les villes fournisseurs soient affichées à gauche et que l'espace vide soit rempli de points :

    SELECT RPAD(ville, 15, ".") FROM vendeurs ;


    Notez que la valeur len limite le nombre de caractères à imprimer, c'est-à-dire si le nom de la ville fait plus de 15 caractères, il sera tronqué.


  • LTRIM(str) Renvoie la chaîne str sans tous les espaces de début. Cette fonction de chaîne est utile pour afficher correctement les informations dans les cas où des espaces aléatoires sont autorisés lors de la saisie des données :

    SELECT LTRIM(ville) FROM fournisseurs ;


  • RTRIM(str) Renvoie la chaîne str avec tous les espaces de fin supprimés :

    SELECT RTRIM(ville) FROM fournisseurs ;

    Dans notre cas, il n'y avait pas d'espaces supplémentaires, nous ne verrons donc pas le résultat extérieurement.


  • TRIM(str) Renvoie la chaîne str sans tous les espaces de début et de fin :

    SELECT TRIM(ville) FROM fournisseurs ;


  • LOWER(str) Renvoie la chaîne str avec tous les caractères convertis en minuscules. Il ne fonctionne pas correctement avec les lettres russes, il est donc préférable de ne pas l'utiliser. Par exemple, appliquons cette fonction à la colonne city :

    SELECT city, LOWER(city) FROM vendeurs ;


    Voyez ce qui s'est avéré abracadabra. Mais avec le latin tout est en ordre :

    SÉLECTIONNER INFÉRIEUR("VILLE");



  • UPPER(str) Renvoie la chaîne str avec tous les caractères convertis en majuscules. Il est également préférable de ne pas utiliser de lettres russes. Mais avec le latin tout est en ordre :

    SELECT UPPER(email) FROM clients ;



  • LENGTH(str) Renvoie la longueur de la chaîne str. Par exemple, découvrons le nombre de caractères dans nos adresses de fournisseurs :

    SELECT address, LENGTH(address) FROM vendeurs ;



  • LEFT(str, len) Renvoie la longueur des caractères de gauche de str. Par exemple, n'affichons que les trois premiers caractères dans les villes fournisseurs :

    SELECT nom, LEFT(ville, 3) FROM vendeurs ;



  • RIGHT(str, len) Renvoie la longueur des caractères de droite de str. Par exemple, laissez seulement les trois derniers caractères être affichés dans les villes fournisseurs : SELECT LOAD_FILE("C:/proverka");
    Veuillez noter que vous devez spécifier le chemin absolu vers le fichier .

Comme déjà mentionné, il existe de nombreuses autres fonctions de chaîne, mais même certaines de celles considérées ici sont extrêmement rarement utilisées. Par conséquent, cela mettra fin à leur examen et passera à des fonctions de date et d'heure plus couramment utilisées.

Aux autres. Il a la syntaxe suivante :

CONV(nombre,N,M)

Argument numéro est dans le système numérique de base N. La fonction le convertit dans le système numérique de base M et renvoie la valeur sous forme de chaîne.

Exemple 1

La requête suivante convertit le nombre 2 de décimal en binaire :

SÉLECTIONNER CONV(2,10,2);

Résultat : 10

Pour convertir le nombre 2E d'hexadécimal en décimal, une requête est requise :

SÉLECTIONNER CONV("2E",16,10);

Résultat : 46

Une fonction CARBONISER() traduit le code ASCII en chaînes. Il a la syntaxe suivante :

CHAR(n1,n2,n3..)

Exemple 2

SELECT CAR(83,81,76);

Résultat : SQL

Les fonctions suivantes renvoient la longueur d'une chaîne :

  • LONGUEUR(chaîne);
  • OCTET_LENGTH(chaîne);
  • CHAR_LENGTH(chaîne);
  • CHARACTER_LENGTH(chaîne).

Exemple 3

CHOISIR LONGUEUR("MySQL");

Résultat : 5

Une fonction parfois utile LONGUEUR_BIT(chaîne), qui renvoie la longueur de la chaîne en bits.

Exemple 4

CHOISIR LONGUEUR_BIT("MySQL");

Résultat : 40

Fonctions de sous-chaîne

Une sous-chaîne est généralement une partie d'une chaîne. Souvent, vous souhaitez connaître la position de la première occurrence d'une sous-chaîne dans une chaîne. Il existe trois fonctions qui résolvent ce problème dans MySQL :

  • LOCATE(sous-chaîne, chaîne [,position]);
  • POSITION(sous-chaîne, chaîne);
  • INSTR(chaîne, sous-chaîne).

Si la sous-chaîne n'est pas contenue dans la chaîne, les trois fonctions renvoient 0. La fonction INSTR() diffère des deux autres par l'ordre de ses arguments. La fonction LOCATE() peut contenir un troisième argument position, qui vous permet de rechercher une sous-chaîne dans une chaîne non pas depuis le début, mais depuis la position spécifiée.

Exemple 5

SELECT LOCATE("Topaze", "Topaze");

Résultat : 31

SELECT POSITION("Topaze", "Topaze");

Résultat : 31

SELECT INSTR("Topaze",'Topaze');

Résultat : 31

SELECT LOCATE("Topaz", "Topaz Plant and LLC Topaz", 9);

Résultat : 20

SELECT LOCATE("Diamant", "Topaze");

Résultat : 0

Les fonctions GAUCHE(ligne, N) et DROITE(chaîne, N) renvoie respectivement les N caractères les plus à gauche et les plus à droite de la chaîne.

Exemple 6

CHOISIR GAUCHE("SGBD MySQL", 4);

Résultat : SGBD

SELECT DROIT("SGBD MySQL", 5);

Résultat : MySQL

Parfois, vous devez obtenir une sous-chaîne qui commence à une position donnée. Les fonctions suivantes sont utilisées pour cela :

  • SUBSTRING(chaîne, position, N);
  • MID(chaîne, position, N).

Les deux fonctions renvoient N caractères de la chaîne donnée, en commençant à la position donnée.

Exemple 7

SELECT SUBSTRING("Le SGBD MySQL est l'un des SGBD les plus populaires", 6,5);

Résultat : MySQL

Lorsque vous travaillez avec des adresses e-mail et des adresses de sites Web, la fonction est très utile. SUBSTR_INDEX(). La fonction a trois arguments :

SUBSTR_INDEX(chaîne, délimiteur, N).

L'argument N peut être positif ou négatif. S'il est négatif, la fonction trouve la nième occurrence du délimiteur, en partant de la droite. Ensuite, il renvoie la sous-chaîne située à droite du délimiteur trouvé. Si N est positif, alors la fonction trouve la Nième occurrence du délimiteur à gauche et renvoie la sous-chaîne à gauche du délimiteur trouvé.

Exemple 8

SELECT SUBSTRING_INDEX("www.mysql.ru",".",2);

Résultat : www.mysql

SELECT SUBSTRING_INDEX("www.mysql.ru",".",-2);

Résultat : mysql.com

Une fonction REMPLACER(chaîne, sous-chaîne1, sous-chaîne2) vous permet de remplacer toutes les occurrences de sous-chaîne1 dans une chaîne par sous-chaîne2.

Les fonctions et opérateurs de chaîne de base fournissent une variété d'options et renvoient une valeur de chaîne en conséquence. Certaines fonctions de chaîne sont à deux éléments, ce qui signifie qu'elles peuvent fonctionner sur deux chaînes en même temps. La norme SQL 2003 prend en charge les fonctions de chaîne.

opérateur de concaténation

SQL 2003 définit l'opérateur de concaténation (||) qui concatène deux chaînes distinctes en une seule valeur de chaîne.

Plate-forme DB2

La plateforme DB2 prend en charge l'opérateur de concaténation SQL 2003, ainsi que son synonyme, la fonction CONCAT.

Plate-forme MySQL

La plate-forme MySQL prend en charge la fonction CONCATQ, synonyme de l'opérateur de concaténation SQL 2003.

Oracle et PostgreSQL

Les plates-formes PostgreSQL et Oracle prennent en charge l'opérateur de concaténation à double barre verticale de SQL 2003.

Plate-forme SQL Server

La plate-forme SQL Server utilise le signe plus (+) comme synonyme de l'opérateur de concaténation SQL 2003. SQL Server dispose d'un paramètre système CONCAT_NULL_YIELDS_NULL qui contrôle le comportement du système lorsque des valeurs NULL sont rencontrées lorsque des valeurs de chaîne sont concaténées.

/* Syntaxe SQL 2003 */

chaîne || chaîne2 || chaîne3

chaîne1chaîne2chaîne3

/* Pour MySQL */

CONCAT("chaîne1", "chaîne2")

Si l'une des valeurs concaténées est nulle, une chaîne vide est renvoyée. De plus, si une valeur numérique est impliquée dans la concaténation, elle est implicitement convertie en une valeur de chaîne.

SELECT CONCAT("Mon", "bologne", "a", "un", "prénom", "nom…");

Mon bologne a un prénom

SELECT CONCAT("Mon", NULL, "a", "prénom", "nom…");

CONVERTIR et TRADUIRE

La fonction CONVERT modifie l'affichage d'une chaîne de caractères dans un jeu de caractères et un classement. Par exemple, la fonction CONVERT peut être utilisée pour modifier le nombre de bits par caractère.

La fonction TRANSLATE traduit une valeur de chaîne d'un jeu de caractères à un autre. Par exemple, la fonction TRANSLATE peut être utilisée pour convertir une valeur du jeu de caractères anglais en jeu de caractères Kanji (japonais) ou cyrillique (russe). La traduction elle-même doit déjà exister, soit par défaut, soit créée avec la commande CREATE TRANSLATION.

Syntaxe SQL 2003

CONVERT (character_value USING char_convert_name)

TRANSLATE(character_value USING translation_name)

La fonction CONVERT convertit une valeur de caractère dans le jeu de caractères avec le nom spécifié dans le paramètre character_conversion_name. La fonction TRANSLATE convertit une valeur de caractère dans le jeu de caractères spécifié dans translation_name.

Parmi les plates-formes considérées, seule Oracle prend en charge les fonctions CONVERT et TRANSLATE telles qu'elles sont définies dans la norme SQL 2003. L'implémentation d'Oracle de la fonction TRANSLATE est très similaire, mais pas identique à SQL 2003. Dans cette implémentation, la fonction ne prend que deux arguments et ne traduit qu'entre le jeu de caractères de la base de données et le jeu de caractères activé par les paramètres régionaux.

L'implémentation de la fonction CONV par MySQL convertit uniquement les nombres d'une base à une autre. Dans SQL Server, cependant, l'implémentation de la fonction CONVERT est très riche et modifie le type de données d'une expression, mais à tous autres égards, elle diffère de la fonction CONVERT standard de SQL 2003. La plate-forme PostgreSQL ne prend pas en charge la fonction CONVERT, et l'implémentation de la fonction TRANSLATE convertit toutes les occurrences d'une chaîne de caractères en toute autre chaîne de caractères.

DB2

La plateforme DB2 ne prend pas en charge la fonction CONVERT et la prise en charge de la fonction TRANSLATE n'est pas conforme à la norme ANSI. La fonction TRANSLATE est utilisée pour convertir des sous-chaînes et a toujours été synonyme de la fonction UPPER car la fonction UPPER n'a été ajoutée que récemment à DB2. Si la fonction TRANSLATE est utilisée dans DB2 avec un seul argument d'expression de caractère, le résultat est la même chaîne convertie en majuscules. Si la fonction est utilisée avec plusieurs arguments, tels que TRANSLATE(ucmo4HUK, replace, match), la fonction convertira tous les caractères de la source qui se trouvent également dans le paramètre match. Chaque caractère de la source qui se trouve à la même position que le paramètre match sera remplacé par le caractère du paramètre replace. Ci-dessous un exemple.

TRANSLATE("Bonjour, le monde!") "BONJOUR ; LE MONDE !"

TRANSLATE("Bonjour, Monde1", "wZ", "1W") "Hewwo, Zorwd1

MySQL

La plate-forme MySQL ne prend pas en charge les fonctions TRANSLATE et CONVERT.

Oracle

La plate-forme Oracle prend en charge la syntaxe suivante pour les fonctions CONVERT et TRANSLATE.

Dans l'implémentation Oracle, la fonction CONVERT renvoie le texte de valeur de caractère converti en target_character_set. char_value est la chaîne à convertir, target_charset est le nom du jeu de caractères dans lequel la chaîne doit être convertie et source_charset est le jeu de caractères dans lequel la valeur de la chaîne a été initialement stockée.

La fonction TRANSLATE dans Oracle est conforme à la syntaxe ANSI, mais vous ne pouvez choisir qu'un des deux jeux de caractères : le jeu de caractères de la base de données (CHARJCS) et le jeu de caractères de prise en charge de la langue nationale (NCHARJZS).

Oracle prend également en charge une autre fonction, également appelée TRANSLATE (sans utiliser le mot-clé USING). Cette fonction TRANSLATE n'a rien à voir avec la conversion du jeu de caractères.

Les noms des jeux de caractères cible et source peuvent être passés sous forme de constantes de chaîne ou de référence à une colonne de table. Notez que lors de la conversion d'une chaîne en un jeu de caractères qui n'affiche pas tous les caractères convertis, vous pouvez substituer des caractères génériques.

Oracle prend en charge plusieurs jeux de caractères courants, notamment US7ASCII, WE8DECDEC. WE8HP, F7DEC, WE8EBCDIC500, WE8PC850u WE8ISO8859PI. Par exemple:

SÉLECTIONNER CONVERT ("Gro2", "US7ASCII", "WE8HP") À PARTIR DE DOUBLE ;

PostgreSQLName

La plate-forme PostgreSQL prend en charge l'instruction ANSI CONVERT et les conversions peuvent être définies ici à l'aide de la commande CREATE CONVERSION. L'implémentation PostgreSQL de la fonction TRANSLATE fournit un ensemble étendu de fonctions qui vous permettent de convertir n'importe quel texte en un autre texte dans une chaîne spécifiée.

TRANSLATE (chaîne de caractères, from_text, to_text)

Voici quelques exemples:

SÉLECTIONNER TRADUIRE("12345abcde", "5a", "XX"); "1234XXbcde" SELECT TRANSLATE(title, "Computer", "PC") FROM titres WHERE type="Personal_computer" SELECT CONVERT("PostgreSQL" USING iso_8859_1_to_utf_8) "PostgreSQL"

serveur SQL

La plate-forme SQL Server ne prend pas en charge la fonction TRANSLATE. L'implémentation SQL Server de la fonction CONVERT ne respecte pas la norme SQL 2003. Cette fonction est équivalente à la fonction CAST dans SQL Server.

CONVERT (type de données[(longueur) | (précision, échelle)], expression, style])

Le style de clause est utilisé pour définir le format de conversion de date. Consultez la documentation de SQL Server pour plus d'informations. Ci-dessous un exemple.

SELECT titre, CONVERT(char(7), ytd_sales) FROM titres ORDER BY titre ALLER

Aujourd'hui, je propose de considérer des exemples simples d'utilisation Fonctions de chaîne Transact-SQL, et pas seulement une description et des exemples de certaines fonctions, mais leur combinaison, c'est-à-dire comment vous pouvez les imbriquer les unes dans les autres, car les fonctions standard ne suffisent pas pour implémenter de nombreuses tâches et vous devez les utiliser ensemble. Et donc je voudrais vous montrer quelques exemples simples d'écriture de telles requêtes.

Vous et moi avons déjà considéré les fonctions de chaîne SQL, mais comme les implémentations de ce langage dans différents SGBD sont différentes, par exemple, certaines fonctions ne sont pas dans Transact-SQL, mais elles sont en PL / PGSql, et la dernière fois que nous avons considéré chaîne fonctions qui peuvent être utilisées dans plpgsql et donc aujourd'hui nous parlerons spécifiquement de Transact-SQL.

Comment combiner SUBSTRING, CHARINDEX et LEN

Et ainsi, par exemple, vous devez rechercher une partie d'une chaîne selon un certain critère et la découper, et pas seulement rechercher une partie du même type, mais dynamiquement, c'est-à-dire pour chaque ligne, la chaîne de recherche sera différente. Nous écrirons des exemples dans Management Studio SQL Server 2008.

Pour ce faire, nous utiliserons les fonctions suivantes :

  • SOUS-CHAINE(str, start, len) - cette fonction coupe une partie d'une chaîne d'une autre chaîne. Il a trois paramètres 1. C'est la chaîne elle-même ; 2. La position de départ à partir de laquelle vous souhaitez commencer à couper ; 3. Le nombre de caractères, combien couper.
  • CHARINDEX(str1, str2) - recherche str1 dans str2 et renvoie le nombre ordinal du premier caractère si une telle chaîne est trouvée. Il a un troisième paramètre facultatif, avec lequel vous pouvez spécifier de quel côté commencer la recherche.
  • LEN(str1) - longueur de la chaîne, c'est-à-dire Personnages.

Comme vous pouvez le voir, j'ai utilisé ici la déclaration de variables, et vous pouvez substituer vos propres champs dans la requête au lieu de variables. Voici le code lui-même :

Déclarez @result as varchar(10) --source string declare @str1 as varchar(100) --search string declare @str2 as varchar(10) set @str1 = "Tester la chaîne pour rechercher une autre chaîne" set @str2 = " chaîne" définir @résultat=sous-chaîne(@str1,CHARINDEX(@str2, @str1), LEN(@str2)) sélectionner @rezult

Le point ici est que, en utilisant la fonction len, nous découvrons combien de caractères doivent être coupés, et charindex définit la position à partir de laquelle commencer à couper, et, en conséquence, substring effectue la sélection elle-même dans la chaîne.

Comment combiner GAUCHE, DROITE et LEN

Disons que vous avez besoin d'obtenir les premiers caractères d'une chaîne ou de vérifier ces premiers caractères dans une chaîne pour la présence de quelque chose, par exemple, un certain nombre, et sa longueur est naturellement différente (naturellement, l'exemple de test).

  • À gauche(str, kol) - la fonction coupe le nombre spécifié de caractères à partir de la gauche, a deux paramètres : le premier est une chaîne et le second, respectivement, le nombre de caractères ;
  • À droite(str, kol) - la fonction supprime le nombre spécifié de caractères à partir de la droite, les paramètres sont les mêmes.

Nous allons maintenant utiliser des requêtes simples sur la table

Commençons par créer la test_table :

CREATE TABLE ( IDENTITY(1,1) NOT NULL, (18, 0) NULL, (50) NULL, CONTRAINTE PRIMARY KEY CLUSTERED ( ASC)AVEC (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = MARCHE) MARCHE ) MARCHE ALLER

Remplissons-le avec des données de test et écrivons les requêtes suivantes :

Comme vous l'avez compris, la première requête n'est qu'une sélection de toutes les lignes (SQL Basics - l'instruction select), et la seconde est déjà une combinaison directe de nos fonctions, voici le code :

Select * from test_table select number, left(text,LEN(number)) as str from test_table

Et si ces nombres étaient à droite, alors nous utiliserions la fonction À DROITE.

Utilisation combinée de Rtrim, Ltrim, Upper et Lower

En supposant que vous ayez une ligne avec des espaces au début et à la fin, et que vous voudriez vous en débarrasser, bien sûr, et aussi, par exemple, mettre la première lettre de cette ligne en majuscule.

  • Rtrim(str) - supprimer les espaces à droite ;
  • Ltrim(str) - supprimer les espaces à gauche ;
  • Plus haut(str) - convertit la chaîne en majuscule ;
  • Inférieur(str) - convertit la chaîne en minuscules.

Comme vous pouvez le voir, pour la fixation, nous avons également utilisé ici Sous-chaîne et Len. Le sens de la requête est simple, on supprime les espaces à droite comme à gauche, puis on convertit le premier caractère en majuscule en le coupant, puis on concatène (+ opérateur) ce caractère avec la chaîne restante. Voici le code :

Déclarez @str1 comme varchar(100) set @str1 = " tester la chaîne avec des espaces de début et de fin " select @str1 select upper(substring(rtrim(ltrim(@str1)),1,1))+ lower(substring( rtrim( ltrim(@str1)),2,LEN(rtrim(ltrim(@str1)))-1))

Pour aujourd'hui, je pense assez, et si vous aimez programmer en SQL, alors sur ce site, nous avons abordé à plusieurs reprises ce sujet très intéressant, par exemple.



Vous avez aimé l'article ? Partagez-le