C ke SQL: Karakter
Pengidentifikasi untuk tipe data ODBC C karakter adalah:
SQL_C_CHAR
SQL_C_WCHAR
Tabel berikut ini memperlihatkan tipe data ODBC SQL tempat data karakter C dapat dikonversi. Untuk penjelasan tentang kolom dan istilah dalam tabel, lihat Mengonversi Data dari C ke Jenis Data SQL.
Catatan
Ketika data karakter C dikonversi ke data Unicode SQL, panjang data Unicode harus berupa angka genap.
Pengidentifikasi jenis SQL | Uji | SQLSTATE |
---|---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR |
Panjang byte data <= Panjang kolom. Panjang byte panjang Kolom data > . |
n/a 22001 |
SQL_WCHAR SQL_WVARCHAR SQL_WLONGVARCHAR |
Panjang karakter data <= Panjang kolom. Panjang karakter panjang Kolom data > . |
n/a 22001 |
SQL_DECIMAL SQL_NUMERIC SQL_TINYINT SQL_SMALLINT SQL_INTEGER SQL_BIGINT |
Data dikonversi tanpa pemotongan Data dikonversi dengan pemotongan digit pecahan[e] Konversi data akan mengakibatkan hilangnya seluruh digit (dibandingkan dengan pecahan) digit[e] Nilai data bukan numerik-literal |
n/a 22001 22001 22018 |
SQL_REAL SQL_FLOAT SQL_DOUBLE |
Data berada dalam rentang jenis data tempat angka sedang dikonversi Data berada di luar rentang jenis data tempat angka sedang dikonversi Nilai data bukan numerik-literal |
n/a 22003 22018 |
SQL_BIT | Data adalah 0 atau 1 Data lebih besar dari 0, kurang dari 2, dan tidak sama dengan 1 Data kurang dari 0 atau lebih besar dari atau sama dengan 2 Data bukan numerik-literal |
n/a 22001 22003 22018 |
SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY |
(Panjang byte data) / 2 <= panjang byte kolom (Panjang byte data) / panjang byte kolom 2 > Nilai data bukan nilai heksadesimal |
n/a 22001 22018 |
SQL_TYPE_DATE | Nilai data adalah ODBC-date-literal yang valid Nilai data adalah ODBC-timestamp-literal yang valid; bagian waktu adalah nol Nilai data adalah ODBC-timestamp-literal yang valid; bagian waktu bukan nol[a] Nilai data bukan ODBC-date-literal atau ODBC-timestamp-literal yang valid |
n/a n/a 22008 22018 |
SQL_TYPE_TIME | Nilai data adalah ODBC-time-literal yang valid Nilai data adalah ODBC-timestamp-literal yang valid; bagian detik pecahan adalah nol[b] Nilai data adalah ODBC-timestamp-literal yang valid; bagian detik pecahan bukan nol[b] Nilai data bukan ODBC-time-literal atau ODBC-timestamp-literal yang valid |
n/a n/a 22008 22018 |
SQL_TYPE_TIMESTAMP | Nilai data adalah ODBC-timestamp-literal yang valid; bagian detik pecahan tidak terpotong Nilai data adalah ODBC-timestamp-literal yang valid; bagian detik pecahan terpotong Nilai data adalah ODBC-date-literal[c] yang valid Nilai data adalah ODBC-time-literal[d] yang valid Nilai data bukan ODBC-date-literal, ODBC-time-literal, atau ODBC-timestamp-literal yang valid |
n/a 22008 n/a n/a 22018 |
Semua jenis interval SQL | Nilai data adalah nilai interval yang valid; tidak ada pemotongan yang terjadi Nilai data adalah nilai interval yang valid; nilai di salah satu bidang dipotong Nilai data bukan literal interval yang valid |
n/a 22015 22018 |
[a] Bagian waktu tanda waktu terpotong.
[b] Bagian tanggal tanda waktu diabaikan.
[c] Bagian waktu tanda waktu diatur ke nol.
[d] Bagian tanggal tanda waktu diatur ke tanggal saat ini.
[e] Sumber driver/data secara efektif menunggu hingga seluruh string diterima (bahkan jika data karakter dikirim dalam potongan-potongan oleh panggilan ke SQLPutData) sebelum mencoba melakukan konversi.
Ketika data karakter C dikonversi ke data SQL numerik, tanggal, waktu, atau tanda waktu, kosong di depan dan berikutnya diabaikan.
Ketika data karakter C dikonversi menjadi data SQL biner, masing-masing dua byte data karakter dikonversi menjadi satu byte (8 bit) data biner. Setiap dua byte data karakter mewakili angka dalam bentuk heksadesimal. Misalnya, "01" dikonversi ke 00000001 biner dan "FF" dikonversi ke 11111111 biner.
Driver selalu mengonversi pasangan digit heksadesimal menjadi byte individual dan mengabaikan byte null-termination. Karena itu, jika panjang string karakter ganjil, byte terakhir dari string (tidak termasuk byte penghentian null, jika ada) tidak dikonversi.
Catatan
Pengembang aplikasi tidak disarankan untuk mengikat data karakter C ke jenis data SQL biner. Konversi ini biasanya tidak efisien dan lambat.