データ型変換

データは、ある型から別の型に次の 4 回変換できます。あるアプリケーション変数から別のアプリケーション変数にデータが転送されるとき (C から C)、アプリケーション変数内のデータがステートメント パラメーターに送信されるとき (C から SQL)、結果セット列のデータがアプリケーション変数に返されるとき (SQL から C)、 データソース列から別のデータ ソース列にデータが転送されるとき (SQL から SQL) です。

あるアプリケーション変数から別のアプリケーション変数にデータが転送されるときに発生する変換は、このドキュメントの範囲外です。

アプリケーションが変数を結果セットの列またはステートメント パラメーターにバインドする場合、アプリケーションは、アプリケーション変数のデータ型の選択でデータ型変換を暗黙的に指定します。 たとえば、列に整数データが含まれているとします。 アプリケーションが整数変数を列にバインドする場合、変換が行われないことを指定します。アプリケーションが文字変数を列にバインドする場合、データを整数から文字に変換することを指定します。

ODBC では、各 SQL データ型と C データ型の間でデータを変換する方法を定義します。 基本的に、ODBC では、文字から整数、整数から浮動小数点への変換など、すべての妥当な変換がサポートされ、浮動小数点から日付などの不適切な定義された変換はサポートされません。 ドライバーは、サポートする各 SQL データ型のすべての変換をサポートするために必要です。 SQL データ型と C データ型の間の変換の完全な一覧については、「付録 D: データ型」の「SQL データ型から C データ型へのデータの変換」および「C データ型から SQL データ型へのデータの変換」を参照してください。

ODBC では、ある SQL データ型から別の SQL データ型にデータを変換するためのスカラー関数も定義されています。 CONVERT スカラー関数は、ドライバーによって、データ ソースで変換を実行するために定義された基になるスカラー関数または関数にマッピングされます。 この関数は DBMS 固有の関数にマッピングされるため、ODBC では、これらの変換のしくみやサポートする必要がある変換は定義されません。 アプリケーションは、SQLGetInfo のSQL_CONVERT オプションを使用して、特定のドライバーとデータ ソースでサポートされている変換を検出します。 CONVERT スカラー関数の詳細については、「ODBC のエスケープ シーケンス」および「明示的なデータ型変換関数」を参照してください。