前回の記事では、SQL Server 2012で追加される新構文を紹介しました。
本記事では、組み込み関数でとして追加される14個の関数を説明します。
追加された関数は大きく分けると、分岐処理・日付処理・変換処理・文字列処理に分類されます。
分岐処理
- choose
- iif
日付処理
- eomonth
- datefromparts
- datetime2fromparts
- datetimefromparts
- datetimeoffsetfromparts
- smalldatetimefromparts
- timefromparts
変換処理
- parse
- try_convert
- try_parse
文字列処理
- concat
- format
それでは、各関数の内容を確認していきましょう。
分岐処理
choose:値の条件分け
複数の値からオフセットを指定して、値を決定します。excelの同名関数とおなじ処理です。
SQL
SELECT choose( 2, 'AAA', 'AA+', 'AA', 'A-', 'A' ) |
実行結果
AA+ |
iif:分岐
語源:Immediate IF条件分岐をcase句を使用せず、シンプルに表記できます。
excelの同名関数とおなじ処理です。
SQL
DECLARE @param VARCHAR(4) = '0001'; SELECT IIF( @param = '0001', 'true', 'false' ); |
実行結果
true |
日付処理
eomonth:月末の取得
語源:End Of MONTHeomonth()で月末を簡単に取得可能です。
SQL
SELECT eomonth( '2012/01/10' ) |
実行結果
2012-01-31 00:00:00.0000000 |
datefromparts:文字列から日付型の取得
語源:DATE FROM PARTS年・月・日それぞれを意味する文字列から日付型データを取得できます。
他に同系統の処理として、以下の関数が追加されています。
datetime2fromparts, datetimefromparts, datetimeoffsetfromparts, smalldatetimefromparts, timefromparts
SQL
SELECT datefromparts( '2012' '01', '10' ) |
実行結果
2012-01-10 |
変換処理
try_convert:型のキャストを試みる
TRY_CONVERTは、型のキャストが出来るかチェックし、キャストできない場合はNULLを返します。他に同様の関数として、PARSE, TRY_PARSEが追加されています。
SQL
SELECT CASE WHEN try_convert( FLOAT,'10.0A') IS NULL THEN 'NG' ELSE 'OK' END |
実行結果
NG |
文字列処理
concat:文字列の結合
語源:CONCATenate今までのSQLServerでは”+”で文字列連結を行っていましたが、concat()で結合を行うことが出来ます。
Oracleのconcat()関数と異なり、sqlserverでは、引数を3つ以上指定可能です。
SQL
SELECT concat( 'hello', ' ', 'world' ) |
実行結果
hello world |
こちらの記事もどうぞ:
SQLServer2012のSQLで追加される便利な新機能4つ
関連記事
これらが使えなかった場合どうやって代用するんですか?