SQL Server: すべての大文字を適切なケース/タイトルケースにする 質問する

SQL Server: すべての大文字を適切なケース/タイトルケースにする 質問する

すべて大文字でインポートされたテーブルがあり、これを正しい大文字に変換したいと考えています。これを実行するのにどのようなスクリプトを使用したことがありますか?

ベストアンサー1

この関数は:

  • 「大文字小文字」は空白で区切られたすべての「大文字」の単語です
  • 「小文字の単語」はそのまま残す
  • 英語以外のアルファベットでも正常に動作します
  • 最近のSQL Serverバージョンの高度な機能を使用しないため、移植性があります。
  • UnicodeサポートのためにNCHARとNVARCHARを使用するように簡単に変更でき、また適切なパラメータ長も設定できます。
  • 空白の定義を設定できます
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 char
  DECLARE @f INT           -- first letter flag (1/0)
  DECLARE @o VARCHAR(255)  -- output string
  DECLARE @w VARCHAR(10)   -- characters considered as white space

  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 @f = 1 
    BEGIN
     SET @o = @o + @c
     SET @f = 0
    END
    ELSE
    BEGIN
     SET @o = @o + LOWER(@c)
    END

    IF @c LIKE @w SET @f = 1

    SET @i = @i + 1
  END

  RETURN @o
END

結果:

dbo.ToProperCase('ALL UPPER CASE and    SOME lower ÄÄ ÖÖ ÜÜ ÉÉ ØØ ĈĈ ÆÆ')
-----------------------------------------------------------------
All Upper Case and      Some lower Ää Öö Üü Éé Øø Cc Ææ

おすすめ記事