【SQL Server】TRY_CONVERT関数の使い方を徹底解説!構文・日付書式・実行例まとめ
この記事では、SQL Serverにおけるデータ型変換関数「TRY_CONVERT」の使い方について、具体的な構文と実行例を交えながら詳しく解説します。TRY_CONVERT関数を正しく理解し、実務で安全かつ効率的に活用できるようにしましょう。
TRY_CONVERT関数とは
TRY_CONVERT関数は、SQL Serverで式(expression)を任意のデータ型に変換するための関数です。特に日付型(date)の場合は、指定した書式に従った変換も可能です。変換に失敗した場合はNULLを返し、成功した場合は変換後の値を返します。通常のCONVERT関数と異なり、変換エラーによってクエリ全体が異常終了することがないため、不揃いなデータを扱う際にも安心して利用できます。
構文
SQL ServerでTRY_CONVERT関数を使用する際は、以下の構文を使います。
TRY_CONVERT(データ型(長さ), 式, 書式)
パラメータの説明:
- データ型: 変換先となる新しいデータ型の名前です。指定できるのは bigint、int、smallint、tinyint、bit、decimal、numeric、money、smallmoney、float、real、datetime、smalldatetime、char、varchar、text、nchar、nvarchar、ntext、binary、varbinary、image などです。
- 長さ(省略可能): char、varchar、nchar、nvarchar、binary、varbinary 型の場合に、結果となるデータの長さを指定します。
- 式: 別のデータ型へ変換したい値です。テーブルのカラム名や、新しいデータ型に変換したい計算式を指定することもできます。
- 書式(省略可能): 日付形式のデータを文字列に変換する際のフォーマットを指定する数値です。以下の表に、TRY_CONVERT関数でよく使われる主な書式をまとめます。
日付・時刻の書式一覧
| 書式(yy) | 書式(yyyy) | 表示内容 |
|---|---|---|
| 0 | 100 | mon dd yyyy hh:miAM/PM(デフォルト) |
| 1 | 101 | mm/dd/yyyy(米国標準) |
| 2 | 102 | yy.mm.dd(ANSI標準) |
| 3 | 103 | dd/mm/yy(イギリス/フランス標準) |
| 4 | 104 | dd.mm.yy(ドイツ標準) |
| 5 | 105 | dd-mm-yy(イタリア標準) |
| 6 | 106 | dd mon yy |
| 7 | 107 | Mon dd, yy |
| 8 | 108 | hh:mi:ss |
| 9 | 109 | mon dd yyyy hh:mi:ss:mmmAM/PM |
| 10 | 110 | mm-dd-yy(米国標準) |
| 11 | 111 | yy/mm/dd(日本標準) |
| 12 | 112 | yymmdd(ISO標準) |
| 13 | 113 | dd mon yyyy hh:mi:ss:mmm(ヨーロッパ標準・24時間制) |
| 14 | 114 | hh:mi:ss:mmm(24時間制) |
| 20 | 120 | yyyy-mm-dd hh:mi:ss(ODBC正規・24時間制) |
| 21 | 121 | yyyy-mm-dd hh:mi:ss:mmm(ODBC正規・24時間制) |
| - | 126 | yyyy-mm-ddThh:mi:ss:mmm(ISO8601標準) |
| - | 127 | yyyy-mm-ddThh:mi:ss:mmmZ(ISO8601標準) |
| - | 130 | dd mon yyyy hh:mi:ss:mmmAM/PM(ヒジュラ暦標準) |
| - | 131 | dd/mm/yy hh:mi:ss:mmmAM/PM(ヒジュラ暦標準) |
注意点
- float型やnumeric型のデータをint型(整数)に変換する場合、TRY_CONVERTは小数点以下を切り捨てます。
- 類似の機能を持つCAST関数、CONVERT関数、TRY_CAST関数との違いも併せて確認しておくと理解が深まります。
- TRY_CONVERTは SQL Server 2012 以降で使用可能です(SQL Server 2012、2014、2016、2017などで利用できます)。
使用例
それでは、SQL ServerでのTRY_CONVERT関数の具体的な使用例を見ていきましょう。
SELECT TRY_CONVERT(int, 14.85);
-- 結果:14
-- (小数点以下が切り捨てられたint型の値が返される)
SELECT TRY_CONVERT(float, 14.85);
-- 結果:14.85
-- (float型の値としてそのまま返され、切り捨ては行われない)
SELECT TRY_CONVERT(float, '14 Main St.');
-- 結果:NULL
-- (この文字列はfloat型に変換できないためNULLが返される)
SELECT TRY_CONVERT(varchar, 15.6);
-- 結果:'15.6'
-- (varchar型として返される)
SELECT TRY_CONVERT(varchar(2), 15.6);
-- 結果:NULL
-- (値が長さ2文字のvarcharに収まらないため変換に失敗し、NULLが返される)
SELECT TRY_CONVERT(datetime, '2018-09-13');
-- 結果:'2018-09-13 00:00:00.000'
-- (datetime型として返される)
SELECT TRY_CONVERT(varchar, '2018-09-13', 101);
-- 結果:'09/13/2018'
-- (書式101=mm/dd/yyyy(米国標準)のvarchar型として返される)
このように、TRY_CONVERT関数を使えば、変換できないデータが含まれていてもNULLを返すだけで処理を継続できるため、データクレンジングや移行作業などで非常に便利です。CONVERT関数との使い分けをマスターして、より堅牢なSQLクエリを作成しましょう。
-
【SQL Server】AVG関数の使い方を徹底解説!基本構文から実用例まで
本記事では、SQL Serverにおける数値処理関数「AVG」の使い方を、基本構文と具体的な使用例を交えて詳しく解説します。AVG関数の動作を正しく理解し、実務のデータ集計に活かせるようにしましょう。 AVG関数とは AVG関数は、SQL Serverにおいて式の平均値、または選択された行のうち指定した列の平均値を返す集計関数です。なお、NULLの値は自動的に除外され、平均の計算対象には含まれません。 基本構文 平均値を計算するには、SQL ServerでAVG関数を次のように記述します。 SELECT AVG(列名)FROM テーブル名[WHERE 条件]; パラメータの説明: 列名:平均
-
SQL ServerのCOUNT関数とは?基本構文からDISTINCT・GROUP BYの活用まで徹底解説
この記事では、SQL ServerのCOUNT関数の使い方について、具体的な構文と実行例を挙げながら詳しく解説します。COUNT関数はデータベース操作で最も頻繁に使われる集計関数の一つです。基本をしっかり押さえておくことで、日々のデータ分析やシステム開発に大きく役立ちます。 COUNT関数とは COUNT関数は、SQL Serverにおいてテーブル内のレコード(行)の件数を数えるために使用される集計関数です。重要なポイントとして、NULLが含まれる値はカウントの対象から除外されるという特性があります。 基本構文 SQL ServerでCOUNT関数を使用する際は、以下の構文を使用します。