数値型間の変換
以下の例では、DECIMAL と DOUBLE のデータ型を使用した小数の変換を比較しています。InterSystems IRIS の CONVERT() 構文を使用しています。DOUBLE への変換によって精度が低下します。
SELECT CONVERT(DECIMAL,-123456789.0000123456789) AS DecimalVal, -- -123456789.0000123457
CONVERT(DOUBLE,-123456789.0000123456789) AS DoubleVal -- -123456789.00001235306
以下の文は、ODBC の {fn CONVERT()} 構文を使用して上記と同様の変換を実行します。この構文は DECIMAL データ型をサポートしていないことから、値は DOUBLE データ型にのみ変換されます。
SELECT {fn CONVERT(-123456789.0000123456789,SQL_DOUBLE) } AS DecimalVal -- -123456789.00001235306
文字列間の変換
この例は、expression よりも文字列長が短い出力文字列長を指定し、VARCHAR から VARCHAR への変換で文字列を切り詰めています。切り詰めは、InterSystems IRIS の CONVERT() 構文でのみサポートされています。ODBC の {fn CONVERT()} 構文で唯一サポートされている文字列形式は SQL_VARCHAR です。
SELECT CONVERT(VARCHAR(5),'Hello, World') As TruncatedValue -- 'Hello'
文字データ型で文字列長を指定していない場合、最大長は既定で 30 文字になります。
SELECT CONVERT(VARCHAR,'This string is more than 30 characters.') --This string is more than 30 ch
SELECT {fn CONVERT('This string is more than 30 characters.',SQL_VARCHAR) } --This string is more than 30 ch
CONVERT() 構文の場合、BINARY 型または VARBINARY 型への変換にも、この最大長が適用されます。または、長さの指定されていないデータ型は、データ型テーブルに示すように、MAXLEN が 1 の文字にマップされます。
文字列への日付の変換
以下の例は、DOB (誕生日) 列の日付を SQL_VARCHAR データ型に変換します。ここで得られる文字列は yyyy-mm-dd 形式で表されます。
SELECT DOB,CONVERT(VARCHAR,DOB) AS DOBtoVChar
FROM Sample.Person
SELECT DOB,{fn CONVERT(DOB,SQL_VARCHAR)} AS DOBtoVChar
FROM Sample.Person
以下の例では、誕生日フィールド (DOB) から、形式設定した文字列への変換をいくつか示しています。それぞれの変換後、出力例の日付文字列がコメントに表示されます。
SELECT DOB,
CONVERT(VARCHAR(20),DOB) AS DOBDefault, -- Mar 20 1983 12:00AM
CONVERT(VARCHAR(20),DOB,100) AS DOB100, -- Mar 20 1983 12:00AM
CONVERT(VARCHAR(20),DOB,107) AS DOB107, -- Mar 20, 1983
CONVERT(VARCHAR(20),DOB,114) AS DOB114, -- 00:00:00.000
CONVERT(VARCHAR(20),DOB,126) AS DOB126 -- 1983-03-20T00:00:00:
FROM Sample.Person
既定の形式とコード 100 の形式は同じです。DOB フィールドには時刻値が格納されていないため、時刻を表示する形式 (ここでは、既定値、100、114、126) では、12:00AM (真夜中) を示すゼロ値が指定されます。コード 126 の形式は、日付と時刻の文字列を空白なしで表示します。
InterSystems IRIS の CONVERT() 構文のみが日付文字列の書式設定をサポートしています。ODBC の {fn CONVERT()} 構文ではサポートしていません。
ビット値の変換
BIT データ型変換を実行できます。許容される値は、1、0、または NULL です。その他の値を指定すると、InterSystems IRIS によって SQLCODE -141 エラーが発行されます。この例では NULL に対する 2 種類の BIT 変換を示します。
SET a=""
&sql(SELECT CONVERT(BIT,:a),
CONVERT(BIT,NULL)
INTO :x,:y)
WRITE !,"SQLCODE=",SQLCODE
WRITE !,"the host variable is:",x
WRITE !,"the NULL keyword is:",y
埋め込み SQL を使用してホスト変数に空の文字列を格納している場合にのみ、ビット変換でその文字列を指定できます。CONVERT(BIT,'') のように空の文字列を直接指定すると、InterSystems IRIS によって SQLCODE -141 エラーが発行されます。