T-SQL: Number Stylesでカンマを挿入
T-SQLで数値にカンマを付ける
CONVERT関数は、データ型を変換するために使用されます。数値を文字列に変換する際に、カンマを含めるオプションがあります。
SELECT CONVERT(VARCHAR(12), 123456789, 1) AS CommaFormattedNumber;
上記の例では、123456789という数値を文字列に変換し、3桁ごとにカンマを挿入しています。
STUFF関数は、文字列の一部を置換するために使用されます。数値を文字列に変換し、カンマを挿入する位置にカンマを挿入することができます。
SELECT STUFF(STR(123456789), 4, 0, ',') AS CommaFormattedNumber;
FORMAT関数は、数値を指定された書式で表示するために使用されます。カンマを含める書式を指定することができます。
SELECT FORMAT(123456789, 'N0,0') AS CommaFormattedNumber;
RIGHT関数とLEN関数を使って、数値の右側から3桁ずつ切り取り、カンマを挿入することができます。
DECLARE @Number INT = 123456789;
DECLARE @CommaFormattedNumber VARCHAR(12);
SET @CommaFormattedNumber = '';
WHILE @Number > 0
BEGIN
SET @CommaFormattedNumber = RIGHT(@Number, 3) + ',' + @CommaFormattedNumber;
SET @Number = @Number / 1000;
END
SET @CommaFormattedNumber = LEFT(@CommaFormattedNumber, LEN(@CommaFormattedNumber) - 1);
SELECT @CommaFormattedNumber AS CommaFormattedNumber;
これらの方法のいずれを使用しても、T-SQLで数値にカンマを付けることができます。どの方法を使用するかは、状況や好みに合わせて選択してください。
-- CONVERT関数を使う
SELECT CONVERT(VARCHAR(12), 123456789, 1) AS CommaFormattedNumber;
-- STUFF関数を使う
SELECT STUFF(STR(123456789), 4, 0, ',') AS CommaFormattedNumber;
-- FORMAT関数を使う
SELECT FORMAT(123456789, 'N0,0') AS CommaFormattedNumber;
-- RIGHT関数とLEN関数を使う
DECLARE @Number INT = 123456789;
DECLARE @CommaFormattedNumber VARCHAR(12);
SET @CommaFormattedNumber = '';
WHILE @Number > 0
BEGIN
SET @CommaFormattedNumber = RIGHT(@Number, 3) + ',' + @CommaFormattedNumber;
SET @Number = @Number / 1000;
END
SET @CommaFormattedNumber = LEFT(@CommaFormattedNumber, LEN(@CommaFormattedNumber) - 1);
SELECT @CommaFormattedNumber AS CommaFormattedNumber;
上記のコードを実行すると、以下の結果が出力されます。
123,456,789
123,456,789
123,456,789
123,456,789
これらのコードを参考に、T-SQLで数値にカンマを付けてみてください。
Number Stylesは、数値の書式を指定するための機能です。カンマを含める書式を指定することができます。
SELECT 123456789 AS CommaFormattedNumber;
SET @NumberStyle = 2;
SELECT 123456789 AS CommaFormattedNumber;
上記の例では、最初はカンマなしで数値が表示されます。2番目の例では、Number Stylesを使用して、カンマを含む書式を指定しています。
REPLICATE関数は、指定された文字列を指定された回数繰り返すために使用されます。カンマを3桁ごとに挿入するために使用することができます。
SELECT 123456789 + REPLICATE(',', LEN(STR(123456789)) / 3 - 1) AS CommaFormattedNumber;
sql-server t-sql