SQLServerでデータを扱う際、文字列(VARCHAR や NVARCHAR)の値を数値型(INT や DECIMAL など)に変換したい場面はよくあります。たとえば、以下のようなケースが考えられます。
- 数値が文字列として保存されているが、計算を行いたい
- 数値として比較や集計をしたいが、カラムのデータ型が文字列になっている
- データ入力時に型の統一がされておらず、明示的に変換する必要がある
SQL Serverでは、CAST や CONVERT を使って簡単に文字列を数値型に変換できます。また、変換時にエラーを回避する方法として TRY_CAST や TRY_CONVERT も利用できます。
この記事では、これらの関数の使い方と注意点について、具体的なSQLの例を交えて解説していきます。
SQLServerを日々使っていると、「自分のスキルって転職市場でどう評価されるんだろう?」と気になる方も多いのではないでしょうか。
実際、SQLServerを扱えるエンジニアは業務系企業や社内SE領域で高く評価される傾向があります。
SQLスキルを活かせる転職先を探したい方はこちらが参考になります。ぜひご覧ください。

文字列を数値に変換する方法
SQL Serverでは、文字列を数値型に変換するために CAST 関数 と CONVERT 関数 を使用できます。それぞれの特徴と使い方を解説します。
CAST関数を使う方法
CAST 関数は、データ型を明示的に変換するための標準的なSQL関数です。以下のように使用します。
SELECT CAST('123' AS INT) AS ConvertedValue;出力結果
ConvertedValue
--------------
123特徴
- SQL標準に準拠している
- シンプルな構文で分かりやすい
NULLを含むデータの場合、変換できない値はエラーになる
CONVERT関数を使う方法
CONVERT 関数は、SQL Server独自のデータ型変換関数で、書式設定が可能な点が特徴です。
SELECT CONVERT(INT, '123') AS ConvertedValue;出力結果
ConvertedValue
--------------
123特徴
- SQL Server固有の関数
CASTと同様に型変換を行う- 第3引数を指定することで、日付やフォーマット変換に応用可能(数値変換では不要)
変換時の注意点
文字列を数値型に変換する際、いくつかの注意点があります。特に、変換できない値が含まれている場合はエラーが発生するため、適切な対策が必要です。
変換エラーが発生するケース
以下のようなケースでは、CAST や CONVERT を使用するとエラーになります。
SELECT CAST('abc' AS INT);SELECT CONVERT(INT, '123abc');エラーメッセージの例
Conversion failed when converting the varchar value 'abc' to data type int.これは、文字列 'abc' や '123abc' が数値に変換できないためです。また、NULL 値を変換しようとすると、NULL のままとなります。
SELECT CAST(NULL AS INT);結果
NULLエラーを回避する方法
エラーを防ぐには、TRY_CAST や TRY_CONVERT を使用すると便利です。これらの関数は、変換できない場合に NULL を返すため、安全に処理できます。
SELECT TRY_CAST('abc' AS INT) AS ConvertedValue;SELECT TRY_CONVERT(INT, '123abc') AS ConvertedValue;結果
ConvertedValue
--------------
NULLTRY_ 系関数のメリット
- 変換できない値を
NULLにすることで、処理の途中でエラーが発生しにくくなる COALESCEと組み合わせてデフォルト値を設定できる
SELECT COALESCE(TRY_CAST('abc' AS INT), 0) AS ConvertedValue;結果
ConvertedValue
--------------
0WHERE句での数値変換時の注意
データベースのクエリで WHERE 句内で数値変換を行う場合、エラーが発生する可能性があるため注意が必要です。例えば、以下のクエリはエラーになります。
SELECT * FROM Users WHERE CAST(Age AS INT) > 20;解決策
TRY_CASTを使って NULL に変換ISNUMERICやTRY_PARSEで事前チェック(ただしISNUMERICは一部の特殊文字を許容するため注意)
SELECT * FROM Users WHERE TRY_CAST(Age AS INT) > 20;まとめ
本記事では、SQL Serverで文字列を数値型に変換する方法について解説しました。
文字列を数値型に変換する際は、データの特性やエラーハンドリングを考慮して、適切な関数を選びましょう。エラーを回避しながら効率的にデータを扱うことで、SQL Serverの操作をよりスムーズに進めることができます!
今回ご紹介したSQLServerの操作は、実務の現場でもよく使われる内容です。
もしあなたが、
「もっとこのスキルを活かせる職場に移りたい」
「SQLの知識があるのに評価されない職場でくすぶっている」
そんな思いを持っているなら、一度転職市場での評価をチェックしてみるのもアリです。


コメント