SQL Serverで数値と文字列を変換する。0埋めの方法とは?
レポートや帳票にデータを転記する際に、数値から文字列に変換することや、逆に文字列を数値に置き換えるなどの対応が必要な場面は、意外と多いのではないでしょうか。アプリケーション側で対応するのもひとつの方法ですが、データベースにSQL Serverを利用しているのならば、ぜひFORMAT関数やCONVERT関数を使ってみてください。
- システム
エンジニア - 画面からボタン押下でレポート出力する際に、数値項目に文字列が設定されてシステムエラーとなってしまいました。こういったエラーはどうやって回避できますか?
- プロジェクト
マネージャー - そういう場合には、SQL Sever側で文字列項目を数値項目に変換してあげましょう。FORMAT関数やCONVERT関数が用意されていますので、それらの簡単な使い方を解説していきます。
実行環境
・SQL Server 2018
FORMAT関数とCONVERT関数の基本
1
|
FORMAT (value, format [, culture ])
|
引数 | 説明 |
---|---|
value | 文字列に変換したい対象の数値データを設定します |
format | 標準フォーマット文字列とカスタムフォーマット文字列を指定することができます |
culture | 通貨などカルチャーによって変換の結果が変わるものに対して設定します |
標準フォーマット文字列とは、F: 固定小数点、N:桁区切り記号つき、C: 通貨などがあり、続けて小数点以下桁数を0~99までの数字で指定することが可能なものを指します。
カスタムフォーマット文字列とは、「0:その桁に数字があればその数字を、なければ0が設定される」「#:その桁に数字があればその数字を、なければ空白スペースが設定される」などを指定することが可能なものを指します。
どちらで指定しても元の数値の小数点以下の数字が指定した桁数より多い場合、値は四捨五入されることが注意点として挙げられます。
1
|
CONVERT(type, value [, style])
|
■引数の解説
引数 | 説明 |
---|---|
type | 変換したい型を設定します |
value | 文字列に変換したい対象の数値データを設定します |
style | 第3引数を使用する場面は日付に変換する時です。数値と文字列の型変換では使用することはありません |
数値から文字列への変換方法
数値から文字列へ変換する方法をFORMAT関数のカスタムフォーマット文字列で確認していきましょう。
1
2
3
|
DECLARE @Value decimal(10,3) = 11430.445
SELECT FORMAT(@Value, '#,###.##')
|
実行結果
1
2
3
|
DECLARE @Value int = 20200816
SELECT CONVERT(nvarchar, @Value) as CON_VAR
|
実行結果
文字列から数値への変換方法
文字列から数値へ変換する場合はCONVERT関数のみが使用可能です。以下で使い方を確認していきましょう。
1
2
3
|
DECLARE @Value varchar(10) = '20200816'
SELECT CONVERT(int, @Value) as CON_INT
|
実行結果
数値を0埋めする方法
次に、数値を前0で埋める方法(ゼロパッティング)も紹介します。数値を文字列に型変換を行った際には、0で埋めて桁数を揃えるといった場面があるかもしれません。ぜひこの機会に0埋めの方法も理解しておくことをおすすめします。
1
2
3
4
|
DECLARE @Value int = 3
--4桁の0埋めをしたい場合
SELECT FORMAT(@Value,'0000')
SELECT FORMAT(@Value,'D4')
|
実行結果
- システム
エンジニア - 型変換が簡単に行えました。0埋めの方法もバッチリです。これからは型変換でエラーにならないように対処していきます!
- プロジェクト
マネージャー - 型変換でのシステムエラーは意外と多いです。しっかりとデータベース側でFORMAT関数やCONVERT関数を活用して、型変換の考慮は行っておきたいところですね。
数値と文字列の変換は多くの場面で必要となってきます
アプリケーション開発を行う上で、型変換を必要とする場面は多いのではないでしょうか。その中でも今回解説した、数値と文字列の変換は必ずといえるほど出てきます。
SQL Serverでは、FORMAT関数やCONVERT関数など便利な型変換関数が用意されていますので、上手に使いこなして、型変換エラーなどが発生しないように対処しましょう。また、合わせて0埋めの方法も覚えておくと便利です。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
SQLServer新着案件New Job
-
蔦屋書新店オープンに関するアプリ開発/Oracle/東京都渋谷区/【WEB面談可】/在宅勤務
月給56万~59万円東京都渋谷区(神泉駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
放射線部門システムパッケージの運用保守/Oracle/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
放射線部門システムパッケージの開発のテスター/Oracle/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅)