.NET Frameworkを使用して全ての文字列をプロパーケース/タイトルケースに変換する方法

2024-04-07

SQL Server: 全て大文字をプロパーケース/タイトルケースに変換する

このチュートリアルでは、SQL Serverを使用して、文字列内の全て大文字をプロパーケースまたはタイトルケースに変換する方法を解説します。

プロパーケースとタイトルケース

  • プロパーケース: 名詞の最初の文字のみ大文字で、それ以外は小文字
  • タイトルケース: 各単語の最初の文字のみ大文字

方法

以下の方法を使用して、全ての文字列をプロパーケースまたはタイトルケースに変換できます。

T-SQL 関数を使用する

  • UPPER() 関数: 文字列を全て大文字に変換
  • SUBSTRING() 関数: 文字列の一部を切り取る
  • CHARINDEX() 関数: 文字列内の特定の文字の位置を見つける

例:プロパーケースに変換

DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    UPPER(SUBSTRING(@str, 1, CHARINDEX(' ', @str))) + ' ' + 
    LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, LEN(@str)))
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    UPPER(SUBSTRING(@str, 1, 1)) + 
    LOWER(SUBSTRING(@str, 2, CHARINDEX(' ', @str) - 1)) + ' ' + 
    UPPER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, 1)) + 
    LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 2, LEN(@str)))

CASE ステートメントを使用する

DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    CASE WHEN LEN(@str) > 1 THEN 
        UPPER(SUBSTRING(@str, 1, 1)) + LOWER(SUBSTRING(@str, 2, LEN(@str)))
    ELSE 
        UPPER(@str)
    END
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    CASE WHEN LEN(@str) > 1 THEN 
        UPPER(SUBSTRING(@str, 1, 1)) + 
        CASE WHEN CHARINDEX(' ', @str) > 1 THEN 
            LOWER(SUBSTRING(@str, 2, CHARINDEX(' ', @str) - 1)) + ' ' + 
            UPPER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, 1)) + 
            LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 2, LEN(@str)))
        ELSE 
            LOWER(SUBSTRING(@str, 2, LEN(@str)))
        END
    ELSE 
        UPPER(@str)
    END

.NET Frameworkを使用する

DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    (SELECT SUBSTRING(@str, 1, 1) + LOWER(SUBSTRING(@str, 2, LEN(@str)))) AS ProperCase
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    (SELECT 
        SUBSTRING(@str, 1, 1) + 
        CASE WHEN CHARINDEX(' ', @str) > 1 THEN 
            LOWER(SUBSTRING(@str, 2, CHARINDEX(' ', @str) - 1)) + ' ' + 
            UPPER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, 1)) + 
            LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 2, LEN(@str)))
        ELSE 
            LOWER(SUBSTRING(@str, 2, LEN(@str)))
        END
    ) AS TitleCase



-- プロパーケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    UPPER(SUBSTRING(@str, 1, CHARINDEX(' ', @str))) + ' ' + 
    LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, LEN(@str)))

-- タイトルケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    UPPER(SUBSTRING(@str, 1, 1)) + 
    LOWER(SUBSTRING(@str, 2, CHARINDEX(' ', @str) - 1)) + ' ' + 
    UPPER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, 1)) + 
    LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 2, LEN(@str)))
-- プロパーケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    CASE WHEN LEN(@str) > 1 THEN 
        UPPER(SUBSTRING(@str, 1, 1)) + LOWER(SUBSTRING(@str, 2, LEN(@str)))
    ELSE 
        UPPER(@str)
    END

-- タイトルケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    CASE WHEN LEN(@str) > 1 THEN 
        UPPER(SUBSTRING(@str, 1, 1)) + 
        CASE WHEN CHARINDEX(' ', @str) > 1 THEN 
            LOWER(SUBSTRING(@str, 2, CHARINDEX(' ', @str) - 1)) + ' ' + 
            UPPER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, 1)) + 
            LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 2, LEN(@str)))
        ELSE 
            LOWER(SUBSTRING(@str, 2, LEN(@str)))
        END
    ELSE 
        UPPER(@str)
    END
-- プロパーケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    (SELECT SUBSTRING(@str, 1, 1) + LOWER(SUBSTRING(@str, 2, LEN(@str)))) AS ProperCase

-- タイトルケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    (SELECT 
        SUBSTRING(@str, 1, 1) + 
        CASE WHEN CHARINDEX(' ', @str) > 1 THEN 
            LOWER(SUBSTRING(@str, 2, CHARINDEX(' ', @str) - 1)) + ' ' + 
            UPPER(SUBSTRING(@str, CHARINDEX(' ', @str) + 1, 1)) + 
            LOWER(SUBSTRING(@str, CHARINDEX(' ', @str) + 2, LEN(@str)))
        ELSE 
            LOWER(SUBSTRING(@str, 2, LEN(@str)))
        END
    ) AS TitleCase

出力例

-- プロパーケース
Hello World

-- タイトルケース
HelloWorld

注:

  • これらのサンプルコードは、SQL Server 2017 で動作確認済みです。
  • 他のバージョンの SQL Server では、構文が異なる場合があります。



SQL Serverで全て大文字をプロパーケース/タイトルケースに変換する他の方法

REPLACE 関数を使用する

-- プロパーケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    REPLACE(@str, ' ', ' ') + ' ' + 
    REPLACE(@str, ' ', ' ')

-- タイトルケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    REPLACE(@str, ' ', ' ') + ' ' + 
    REPLACE(@str, ' ', ' ')
-- プロパーケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    TRANSLATE(@str, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') + ' ' + 
    TRANSLATE(@str, 'abcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwxyz')

-- タイトルケースに変換
DECLARE @str VARCHAR(50) = 'hello world'

SELECT 
    TRANSLATE(@str, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') + ' ' + 
    TRANSLATE(@str, 'abcdefghijklmnopqrstuvwxyz', 'abcdefghijklmnopqrstuvwxyz')

C# コード例

public static string ToProperCase(string str)
{
    if (string.IsNullOrEmpty(str))
        return string.Empty;

    return str.Substring(0, 1).ToUpper() + str.Substring(1).ToLower();
}

public static string ToTitleCase(string str)
{
    if (string.IsNullOrEmpty(str))
        return string.Empty;

    string[] words = str.Split(' ');
    for (int i = 0; i < words.Length; i++)
    {
        words[i] = words[i].Substring(0, 1).ToUpper() + words[i].Substring(1).ToLower();
    }

    return string.Join(" ", words);
}

SQL Server コード

CREATE ASSEMBLY [MyAssembly]
FROM [C:\path\to\MyAssembly.dll]

-- プロパーケースに変換
SELECT MyAssembly.ToProperCase(@str)

-- タイトルケースに変換
SELECT MyAssembly.ToTitleCase(@str)
  • これらの方法は、サンプルコードよりも効率的に動作する場合があります。

sql sql-server uppercase


MySQL BETWEEN演算子、DATE_SUB()関数、DATE_ADD()関数を使った日付の取得方法

このチュートリアルでは、MySQLを使用して2つの日付間の全ての日付を取得する方法を説明します。2つの方法を紹介します。方法1:BETWEEN演算子を使うBETWEEN演算子は、指定された範囲内の日付を取得するために使用できます。例:このクエリは、2024年1月1日から2024年3月31日までの全ての dates を取得します。...


Djangoの「in/not in」クエリ:サンプルコードとベストプラクティス

Djangoは、Pythonで書かれたWebフレームワークであり、データベースとのやり取りを容易にする機能を提供しています。その中でも、「in/not in」クエリは、特定の値のリストを含む/含まないレコードを取得する際に役立ちます。クエリの種類...


SQLデータベース設計における1対1、1対多、多対多の関係

データベース設計において、エンティティ間の関係を定義することは重要です。主な関係は3つあり、それぞれ異なる方法で実装されます。1対1関係: 1つのエンティティが別のエンティティと1対1で関連付けられる場合。1対1関係は、2つの方法で実装できます。...


【保存版】PostgreSQLで数百万行のデータをIDで削除:パフォーマンスとメモリ使用量を最適化する

DELETE 文を使用する最も基本的な方法は、DELETE 文を使用する方法です。構文は以下の通りです。この方法はシンプルで分かりやすいですが、数百万行のデータを削除する場合、処理速度が遅くなるという欠点があります。なぜなら、WHERE 句内のすべての ID を個別に検索する必要があるからです。...


MariaDBでカンマ区切りの文字列を列に分割する:SPLIT関数、SUBSTRING_INDEX関数、REGEXP_EXTRACT関数、CASE式、ユーザー定義関数、外部ツールなど、あらゆる方法を徹底解説

MariaDB 10. 2以降では、SPLIT 関数を使ってカンマ区切りの文字列を分割できます。この例では、table_name テーブルの column_name 列にあるカンマ区切りの文字列を分割し、split_column という新しい列に結果を格納します。...


SQL SQL SQL SQL Amazon で見る



SQL Serverにおける大文字小文字を区別した文字列比較

SQL Server で大文字小文字を区別した文字列比較を行うには、以下の方法があります。比較演算子を使用する以下の比較演算子を使用して、大文字小文字を区別した比較を行うことができます。=: 等号演算子は、2つの文字列が完全に一致する場合にのみ True を返します。