"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como converter todo o texto em maiúsculas para o caso apropriado no SQL Server enquanto lida com alterações de caracteres e espaço sem inglês?

Como converter todo o texto em maiúsculas para o caso apropriado no SQL Server enquanto lida com alterações de caracteres e espaço sem inglês?

Postado em 2025-04-14
Navegar:852

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

função SQL Server avançada para conversão de casos adequada

Este artigo detalha uma função robusta do SQL Server projetada para converter texto em maiúsculas em caso adequado, abordando complexidades como caracteres não ingleses e o espaço em branco variável. A função oferece várias vantagens importantes:

  • lida com variações de espaço em branco: lida corretamente vários espaços e vários caracteres de espaço em branco (incluindo quebras de linha, guias e espaços não quebrantes).
  • suporta alfabetos não ingleses: processa com precisão o texto contendo caracteres de alfabetos além do inglês.
  • mantém palavras minúsculas: preserva qualquer palavra minúscula existente dentro da string de entrada.
  • Compatibilidade da versão: Funções em diferentes versões do servidor SQL.
  • personalizável Whitespace: A definição de Whitespace é configurável, permitindo o manuseio personalizado.

Função Implementação:

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  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;

Exemplo de uso:

SELECT dbo.ToProperCase('ALL UPPER CASE and    SOME lower ÄÄ ÖÖ ÜÜ ÉÉ ØØ ĈĈ ÆÆ');

Exemplo de saída:

!
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3