次の方法で共有


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