SQL から C へ: 文字
文字 ODBC SQL データ型の識別子は次のとおりです。
- SQL_CHAR
- SQL_VARCHAR
- SQL_LONGVARCHAR
- SQL_WCHAR
- SQL_WVARCHAR
- SQL_WLONGVARCHAR
次の表は、文字 SQL データの変換先となる ODBC C データ型を示しています。 テーブル内の列と用語の詳細については、「 SQL から C データ型へのデータの変換」を参照してください。
C 型識別子 | テスト | TargetValuePtr | StrLen_or_IndPtr | SQLSTATE |
---|---|---|---|---|
SQL_C_CHAR | データ <BufferLength のバイト長 データ >のバイト長 = BufferLength |
Data 切り捨てられたデータ |
データの長さ (バイト単位) データの長さ (バイト単位) |
該当なし 01004 |
SQL_C_WCHAR | データ <BufferLength の文字長 データ >の文字長 = BufferLength |
Data 切り捨てられたデータ |
文字単位のデータの長さ 文字単位のデータの長さ |
該当なし 01004 |
SQL_C_STINYINT SQL_C_UTINYINT SQL_C_TINYINT SQL_C_SBIGINT SQL_C_UBIGINT SQL_C_SSHORT SQL_C_USHORT SQL_C_SHORT SQL_C_SLONG SQL_C_ULONG SQL_C_LONG SQL_C_NUMERIC | 切り捨てなしで変換されたデータ [b] 小数部の桁を切り捨てて変換されたデータ[a] データを変換すると、(小数ではなく) 全体の数字が失われます[a] データが 数値リテラルではありません[b] |
Data 切り捨てられたデータ 未定義。 未定義。 |
C データ型のバイト数 C データ型のバイト数 未定義。 未定義。 |
該当なし 01S07 22003 22018 |
SQL_C_FLOAT SQL_C_DOUBLE | データは、数値の変換先となるデータ型の範囲内です[a] データが、数値の変換先となるデータ型の範囲外である[a] データが 数値リテラルではありません[b] |
Data 未定義。 未定義。 |
C データ型のサイズ 未定義。 未定義。 |
該当なし 22003 22018 |
SQL_C_BIT | データが 0 または 1 である データが 0 より大きく、2 未満で、1 と等しくない データが 0 より小さいか、2 以上である データが数値リテラルではありません |
Data 切り捨てられたデータ 未定義。 未定義。 |
1[b] 1[b] 未定義。 未定義。 |
該当なし 01S07 22003 22018 |
SQL_C_BINARY | データ <のバイト長 = BufferLength データ >BufferLength のバイト長 |
Data 切り捨てられたデータ |
データの長さ (バイト単位) データの長さ |
該当なし 01004 |
SQL_C_TYPE_DATE | データ値は有効な 日付値です[a] データ値は有効な timestamp-value です。時間の部分は 0[a] データ値は有効な timestamp-value です。time 部分が 0 以外の場合[a],[c] データ値が有効な 日付値 または timestamp-value[a] ではありません |
データ Data 切り捨てられたデータ 未定義。 |
6[b] 6[b] 6[b] 未定義。 |
該当なし 該当なし 01S07 22018 |
SQL_C_TYPE_TIME | データ値は有効な 時間値であり、秒の小数部の値は 0[a] です データ値は、有効な timestamp-value または有効な時刻値です。秒の小数部が 0[a],[d] データ値は有効な timestamp-value です。秒の小数部が 0 以外の [a],[d],[e] データ値が有効な 時間値 または timestamp-value[a] ではありません |
データ Data 切り捨てられたデータ 未定義。 |
6[b] 6[b] 6[b] 未定義。 |
該当なし 該当なし 01S07 22018 |
SQL_C_TYPE_TIMESTAMP | データ値は、有効な timestamp-value または有効な時刻値です。秒の小数部が切り捨てられない [a] データ値は、有効な timestamp-value または有効な時刻値です。秒の小数部の切り捨て[a] データ値は有効な 日付値です[a] データ値は有効な 時間値です[a] データ値が有効な 日付値、 時刻値、または timestamp-value[a] ではありません |
Data 切り捨てられたデータ Data[f] Data[g] 未定義。 |
16[b] 16[b] 16[b] 16[b] 未定義。 |
該当なし 01S07 該当なし 該当なし 22018 |
すべての C 間隔の種類 | データ値は有効な 間隔値です。切り捨てなし データ値は有効な 間隔値です。1 つ以上の末尾フィールドの切り捨て データは有効な間隔です。先頭フィールドの有効桁数が失われる データ値が有効な間隔値ではありません |
Data 切り捨てられたデータ 未定義。 未定義。 |
データの長さ (バイト単位) データの長さ (バイト単位) 未定義。 未定義。 |
該当なし 01S07 22015 22018 |
[a] この変換では BufferLength の値は無視されます。 ドライバーは、*TargetValuePtr のサイズが C データ型のサイズであると想定しています。
[b] これは、対応する C データ型のサイズです。
[c] timestamp-value の時刻部分が切り捨てられます。
[d] timestamp-value の日付部分は無視されます。
[e] タイムスタンプの秒の小数部が切り捨てられます。
[f] タイムスタンプ構造体の時刻フィールドは 0 に設定されます。
[g] タイムスタンプ構造の日付フィールドは現在の日付に設定されます。
余分なスペース
SQL 文字データが次のいずれかの型に変換される場合、先頭と末尾のスペースは無視されます。
- 日付
- numeric
- time
- timestamp
- interval C data