行われる変換は以下のとおりです。
- 文字列変換 一つ目の引数が文字列である場合です。
- 日時変換 一つ目の引数が日付、時刻、タイムスタンプである場合です。
- 小数変換 一つ目の引数が小数である場合です。
- 倍精度浮動小数点数変換 一つ目の引数がDOUBLEあるいはREALである場合です。
- 整数変換 一つ目の引数がSMALLINT、INTEGER、BIGINTである場合です。
一つ目の引数は、その型が組込みのデータ型である必要があります。CHAR関数の返り値は固定長の文字列です。一つ目の引数はNULLとすることができ、その場合は返り値はNULLです。一つ目の引数は、その型がXMLであってはなりません。もしXMLの値を固定長のCHARにしたいのなら、SQL/XML直列化演算子のXMLSERIALIZEを使う必要があります。
文字から文字への変換を行う時の書き方 CHAR (文字式 [, 数] )
- 文字式
- CHAR、VARCHAR、LONG VARCHAR、CLOBのいずれかのデータ型の値を返す式。
- 数
- 返却される固定長文字列の長さ。値は0から254の間でなければならない。
もし文字式の長さが数よりも小さかった場合、長さが数と等しくなるよう、関数の結果は空白によりつめられます。もし文字式の長さが数より大きかった場合、切捨てが行われます。もし空白以外の文字が切り捨てられ、文字式が長い文字列(LONG VARCHARやCLOB)でなければ、警告が返されます。
整数から文字への変換を行うときの書き方 CHAR (整数式 )
- 整数式
- 整数のデータ型(SMALLINT、INTEGER、BIGINT)型の値を返す式
関数の結果は、SQLの整数として渡された引数を文字列で表現したものとなります。結果は引数の数を10進で表すn文字および、もし引数が負数であったなら負の符号から構成されます。また結果は左詰めされています。
- もし一つ目の引数がSMALLINTなら、結果の文字列の長さは6です。もし結果にて数値の文字数が6に満たない場合は、6文字となるよう右側に空白が詰められます。
- もし一つ目の引数がINTEGERなら、結果の文字列の長さは11です。もし結果にて数値の文字数が11に満たない場合は、11文字となるよう右側に空白が詰められます。
- もし一つ目の引数がBIGINTなら、結果の文字列の長さは20です。もし結果にて数値の文字数が20に満たない場合は、20文字となるよう右側に空白が詰められます。
日時から文字への変換を行うときの書き方 CHAR (日時式 )
- 日時式
- 式は次のデータ型の何れかです。
- 日付: 結果は日付を表す文字表現です。結果の長さは10です。
- 時刻: 結果は時刻を表す文字表現です。結果の長さは8です。
- タイムスタンプ: 結果はタイムスタンプを表す文字表現です。結果の長さは26です。
小数から文字への変換を行うときの書き方 CHAR (小数式 )
- 小数式
- 小数のデータ型を返す式です。もし精度や目盛りの変更を行う場合は、文字への変換を行う前にDECIMALというスカラー関数により変更してください。
浮動小数点数から文字への変換を行うときの書き方 CHAR (浮動小数点数式 )
- 浮動小数点数式
- 浮動小数点数のデータ型(DOUBLEやREAL)の値を返す式です。
CHAR関数によりEDLEVEL(smallint型と定義されているとします。)の値を、固定長の文字列として返します。SELECT CHAR(EDLEVEL) FROM EMPLOYEE
EDLEVELが18とするなら、その値がCHAR(6)型で'18 'と返されます。(18に空白が4つ続きます。)