分享方式:


C 到 SQL:字元

字元 ODBC C 資料類型的識別碼如下:

SQL_C_CHAR

SQL_C_WCHAR

下表顯示可轉換 C 字元資料的 ODBC SQL 資料類型。 如需資料表中資料行和詞彙的說明,請參閱 將資料從 C 轉換成 SQL 資料類型

注意

當字元 C 資料轉換成 Unicode SQL 資料時,Unicode 資料的長度必須是偶數。

SQL 類型識別碼 測試 SQLSTATE
SQL_CHAR

SQL_VARCHAR

SQL_LONGVARCHAR
資料位元組長度 = 資料 < 行長度。

資料 > 行長度的位元組長度。
n/a

22001
SQL_WCHAR

SQL_WVARCHAR

SQL_WLONGVARCHAR
資料的 < 字元長度 = 資料行長度。

資料 > 行長度的字元長度。
n/a

22001
SQL_DECIMAL

SQL_NUMERIC

SQL_TINYINT

SQL_SMALLINT

SQL_INTEGER SQL_BIGINT
未截斷的資料轉換

使用小數位數截斷轉換的資料[e]

資料轉換會導致整個數位(而不是小數數位)遺失[e]

資料值不是 數值常值
n/a

22001

22001

22018
SQL_REAL

SQL_FLOAT

SQL_DOUBLE
資料位於要轉換數位的資料類型範圍內

資料超出要轉換數位的資料類型範圍

資料值不是 數值常值
n/a

22003

22018
SQL_BIT 資料為 0 或 1

資料大於 0、小於 2 且不等於 1

資料小於 0 或大於或等於 2

資料不是 數值常值
n/a

22001

22003

22018
SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY
(資料位元組長度) / 2 < = 資料行位元組長度

(資料位元組長度) / 2 > 個數據行位元組長度

資料值不是十六進位值
n/a

22001

22018
SQL_TYPE_DATE 資料值是有效的 ODBC-date-literal

資料值是有效的 ODBC-timestamp-literal ;時間部分為零

資料值是有效的 ODBC-timestamp-literal ;時間部分為非零[a]

資料值不是有效的 ODBC-date-literal 或 ODBC-timestamp-literal
n/a

n/a

22008

22018
SQL_TYPE_TIME 資料值是有效的 ODBC-time-literal

資料值是有效的 ODBC-timestamp-literal ;小數秒部分為零[b]

資料值是有效的 ODBC-timestamp-literal ;小數秒部分為非零[b]

資料值不是有效的 ODBC-time-literal 或 ODBC-timestamp-literal
n/a

n/a

22008

22018
SQL_TYPE_TIMESTAMP 資料值是有效的 ODBC-timestamp-literal ;小數秒部分未截斷

資料值是有效的 ODBC-timestamp-literal ;小數秒部分截斷

資料值是有效的 ODBC-date-literal [c]

資料值是有效的 ODBC-time-literal [d]

資料值不是有效的 ODBC-date-literal、 ODBC-time-literal ODBC-timestamp-literal
n/a

22008

n/a

n/a

22018
所有 SQL 間隔類型 資料值是有效的 間隔值 ;不會發生截斷

資料值是有效的 間隔值 ;其中一個欄位中的值會被截斷

資料值不是有效的間隔常值
n/a

22015

22018

[a] 時間戳記的時間部分會被截斷。

[b] 會忽略時間戳記的日期部分。

[c] 時間戳記的時間部分設定為零。

[d] 時間戳記的日期部分會設定為目前的日期。

[e] 驅動程式/資料來源實際上會等到收到整個字串為止(即使字元資料是藉由呼叫 SQLPutData 來傳送,然後再嘗試執行轉換。

當字元 C 資料轉換成數值、日期、時間或時間戳記 SQL 資料時,會忽略前置和尾端空白。

當字元 C 資料轉換成二進位 SQL 資料時,每兩個位元組的字元資料都會轉換成二進位資料的單一位元組(8 位)。 每兩個位元組的字元資料代表十六進位格式的數位。 例如,「01」 會轉換成二進位00000001,而 「FF」 會轉換成二進位11111111。

驅動程式一律會將十六進位數位組轉換成個別位元組,並忽略 Null 終止位元組。 因此,如果字元字串的長度是奇數的,則字串的最後一個位元組(若有的話,不包括 Null 終止位元組)。未轉換。

注意

不建議應用程式開發人員將字元 C 資料系結至二進位 SQL 資料類型。 此轉換通常效率低下且緩慢。