Maison >base de données >tutoriel mysql >Comment puis-je convertir tout le texte en majuscules en casse appropriée dans SQL Server tout en gérant les caractères non anglais et les variations d'espaces ?

Comment puis-je convertir tout le texte en majuscules en casse appropriée dans SQL Server tout en gérant les caractères non anglais et les variations d'espaces ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-10 07:46:46552parcourir

How Can I Convert All Uppercase Text to Proper Case in SQL Server While Handling Non-English Characters and Whitespace Variations?

Fonction SQL Server avancée pour une conversion correcte de la casse

Cet article détaille une fonction SQL Server robuste conçue pour convertir le texte en majuscules en casse appropriée tout en traitant des complexités telles que les caractères non anglais et les espaces variables. La fonction offre plusieurs avantages clés :

  • Gère les variations d'espaces : Gère correctement plusieurs espaces et divers caractères d'espacement (y compris les sauts de ligne, les tabulations et les espaces insécables).
  • Prend en charge les alphabets non anglais : Traite avec précision le texte contenant des caractères d'alphabets autres que l'anglais.
  • Conserve les mots minuscules : Préserve tous les mots minuscules existants dans la chaîne d'entrée.
  • Compatibilité des versions : Fonctionne sur différentes versions de SQL Server.
  • Espaces personnalisables : La définition des espaces est configurable, permettant une gestion personnalisée.

Implémentation des fonctions :

<code class="language-sql">CREATE FUNCTION ToProperCase(@string VARCHAR(255)) RETURNS VARCHAR(255)
AS
BEGIN
  DECLARE @i INT;           -- Index
  DECLARE @l INT;           -- Input Length
  DECLARE @c NCHAR(1);      -- Current Character
  DECLARE @f INT;           -- First Letter Flag (1/0)
  DECLARE @o VARCHAR(255);  -- Output String
  DECLARE @w VARCHAR(10);   -- Whitespace Characters

  SET @w = '[' + CHAR(13) + CHAR(10) + CHAR(9) + CHAR(160) + ' ' + ']';
  SET @i = 1;
  SET @l = LEN(@string);
  SET @f = 1;
  SET @o = '';

  WHILE @i <= @l
  BEGIN
    SET @c = SUBSTRING(@string, @i, 1);
    IF PATINDEX(@w, @c) > 0
    BEGIN
      SET @f = 1;
      SET @o = @o + @c;
    END
    ELSE
    BEGIN
      IF @f = 1
      BEGIN
        SET @o = @o + UPPER(@c);
        SET @f = 0;
      END
      ELSE
        SET @o = @o + LOWER(@c);
    END
    SET @i = @i + 1;
  END
  RETURN @o;
END;</code>

Exemple d'utilisation :

<code class="language-sql">SELECT dbo.ToProperCase('ALL UPPER CASE and    SOME lower ÄÄ ÖÖ ÜÜ ÉÉ ØØ ĈĈ ÆÆ');</code>

Exemple de sortie :

Toutes les majuscules et certaines minuscules Ää Öö Üü Éé Øø Cc Ææ

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn