首頁 >資料庫 >mysql教程 >在處理非英文字元和空白變體時,如何將 SQL Server 中的所有大寫文字轉換為正確的大小寫?

在處理非英文字元和空白變體時,如何將 SQL Server 中的所有大寫文字轉換為正確的大小寫?

Susan Sarandon
Susan Sarandon原創
2025-01-10 07:46:46552瀏覽

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

用於正確大小寫轉換的高階 SQL Server 函數

本文詳細介紹了一個強大的 SQL Server 函數,該函數旨在將大寫文字轉換為正確的大小寫,同時解決非英語字元和變化的空格等複雜問題。 此功能有幾個關鍵優勢:

  • 處理空白變化:正確處理多個空格和各種空白字元(包括換行符、製表符和不間斷空格)。
  • 支援非英語字母:精確處理包含英語以外字母表中的字元的文字。
  • 保留小寫單字:保留輸入字串中任何現有的小寫單字。
  • 版本相容性:跨不同 SQL Server 版本的功能。
  • 可自訂空白:空白定義是可設定的,允許自訂處理。

功能實作:

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

使用範例:

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

範例輸出:

全部大寫,部分小寫 ää Öö Üü Éé Øø Cc Ææ

以上是在處理非英文字元和空白變體時,如何將 SQL Server 中的所有大寫文字轉換為正確的大小寫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn