.NET Frameworkを使用して全ての文字列をプロパーケース/タイトルケースに変換する方法
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