SQLiteにはprintf()
があります 関数またはformat()
フォーマット文字列に従って数値をフォーマットできるようにする関数。
SQLite 3.18.0以降では、コンマフラグを受け入れます。これにより、整数の千のマークにコンマ区切り文字を付けることができます。
実数/浮動小数点数で機能させるために、さらに作業を行うことができます。
例
千単位の区切り文字としてコンマを使用して整数をフォーマットする例を次に示します。
SELECT printf("%,d", 123456789);
結果:
123,456,789
"%,d"
のフォーマット文字列 この結果を決定したのはです。
実数/浮動小数点数
上記の解決策は、小数部分なしで数値を返す場合にのみ機能します。
そのフォーマット文字列を実数に適用してみましょう:
SELECT printf("%,d", 1234567.4567);
結果:
1,234,567
フォーマット文字列に小数部分が含まれていないため、グループ区切り文字としてコンマが使用されます。
小数部分を返す方法は次のとおりです。
SELECT printf("%.2f", 1234567.4567);
結果:
1234567.46
ここで、"%.2f"
のフォーマット文字列 結果に小数点以下2桁を含める必要があることを指定します。 "%.3f"
を使用できます 小数点以下3桁など。
次のことができると思われるかもしれません:
SELECT printf("%,d.2f", 1234567.4567);
結果:
1,234,567.2f
しかし、それは明らかに機能しませんでした。
SQLiteは、数値の広範なフォーマット機能を提供していません。数値の書式設定は非常に複雑になる可能性があり、通常はアプリケーションレベルで書式設定を適用することをお勧めします。
とはいえ、SQLiteでこれを実際に行う必要がある場合は、整数部分をコンマでフォーマットしてから、それを小数部分と連結してみてください。
たとえば、price
というデータベース列があるとします。 、次の結果を返します:
SELECT price FROM Products;
結果:
5457.99 1238999.99 11.357 3.49 3.0001 1234567.89 1499.5 9.49 149
次の行に沿って何かを実行して、これらすべての数値を千単位の区切り文字でフォーマットすることができます 小数点:
SELECT
printf("%,d", price)
||
substr(
printf("%.2f", price),
instr(printf("%.2f", price), "."),
length(printf("%.2f", price)) - instr(printf("%.2f", price), ".") + 1
)
FROM Products;
結果:
5,457.99 1,238,999.99 11.36 3.49 3.00 1,234,567.89 1,499.50 9.49 149.00
format()
機能
SQLite 3.38.0(2022年2月22日リリース)はprintf()
の名前を変更しました format()
への関数 。元のprintf()
名前は、下位互換性のためにエイリアスとして保持されます。
したがって、このページの最初の例は次のように変更できます。
SELECT format("%,d", 123456789);
結果:
123,456,789