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 資料類型。 此轉換通常效率低下且緩慢。