Compartir vía


C a SQL: Carácter

Los identificadores del tipo de datos ODBC C de caracteres son:

SQL_C_CHAR

SQL_C_WCHAR

En la tabla siguiente se muestran los tipos de datos DE ODBC SQL a los que se pueden convertir los datos de caracteres de C. Para obtener una explicación de las columnas y los términos de la tabla, vea Convertir datos de C a tipos de datos SQL.

Nota

Cuando los datos de caracteres C se convierten en datos SQL Unicode, la longitud de los datos Unicode debe ser un número par.

Identificador de tipo de SQL Prueba SQLSTATE
SQL_CHAR

SQL_VARCHAR

SQL_LONGVARCHAR
Longitud de bytes de datos <= Longitud de columna.

Longitud de bytes de la longitud de la columna de datos > .
N/D

22001
SQL_WCHAR

SQL_WVARCHAR

SQL_WLONGVARCHAR
Longitud de caracteres de datos <= Longitud de columna.

Longitud de caracteres de la longitud de la columna de datos > .
N/D

22001
SQL_DECIMAL

SQL_NUMERIC

SQL_TINYINT

SQL_SMALLINT

SQL_INTEGER SQL_BIGINT
Datos convertidos sin truncamiento

Datos convertidos con truncamiento de dígitos fraccionarios[e]

La conversión de datos provocaría la pérdida de dígitos enteros (en lugar de fracciones) [e]

El valor de datos no es un literal numérico
N/D

22001

22001

22018
SQL_REAL

SQL_FLOAT

SQL_DOUBLE
Los datos están dentro del intervalo del tipo de datos al que se va a convertir el número.

Los datos están fuera del intervalo del tipo de datos al que se va a convertir el número.

El valor de datos no es un literal numérico
N/D

22003

22018
SQL_BIT Los datos son 0 o 1

Los datos son mayores que 0, menores que 2 y no iguales a 1

Los datos son menores que 0 o mayores o iguales que 2

Los datos no son literales numéricos
N/D

22001

22003

22018
SQL_BINARY

SQL_VARBINARY

SQL_LONGVARBINARY
(Longitud de bytes de datos) / 2 <= longitud de bytes de columna

(Longitud de bytes de datos) / 2 > longitud de bytes de columna

El valor de datos no es un valor hexadecimal
N/D

22001

22018
SQL_TYPE_DATE El valor de datos es un valor odbc-date-literal válido

El valor de los datos es una marca de tiempo ODBC-timestamp-literal válida; la parte de tiempo es cero

El valor de los datos es una marca de tiempo ODBC-timestamp-literal válida; time portion is nonzero[a]

El valor de datos no es un odbc-date-literal o ODBC-timestamp-literal válido
N/D

N/D

22008

22018
SQL_TYPE_TIME El valor de datos es un literal de tiempo ODBC válido

El valor de los datos es una marca de tiempo ODBC-timestamp-literal válida; la parte de fracciones de segundo es cero[b]

El valor de los datos es una marca de tiempo ODBC-timestamp-literal válida; fracciones de segundos es distinto de cero[b]

El valor de datos no es un literal odbc-time-literal o ODBC-timestamp-literal válido
N/D

N/D

22008

22018
SQL_TYPE_TIMESTAMP El valor de los datos es una marca de tiempo ODBC-timestamp-literal válida; fracciones de segundos no truncadas

El valor de los datos es una marca de tiempo ODBC-timestamp-literal válida; fracciones de segundos truncadas

El valor de datos es un odbc-date-literal válido[c]

El valor de datos es un odbc-time-literal válido[d]

El valor de datos no es un odbc-date-literal, ODBC-time-literal o ODBC-timestamp-literal válido
N/D

22008

N/D

N/D

22018
Todos los tipos de intervalo de SQL El valor de datos es un valor de intervalo válido; no se produce ningún truncamiento

El valor de datos es un valor de intervalo válido; el valor de uno de los campos se trunca

El valor de datos no es un literal de intervalo válido.
N/D

22015

22018

[a] La parte de tiempo de la marca de tiempo se trunca.

[b] Se omite la parte de fecha de la marca de tiempo.

[c] La parte de tiempo de la marca de tiempo se establece en cero.

[d] La parte de fecha de la marca de tiempo se establece en la fecha actual.

[e] El origen de datos o controlador espera eficazmente hasta que se haya recibido toda la cadena (incluso si los datos de caracteres se envían en fragmentos mediante llamadas a SQLPutData) antes de intentar realizar la conversión.

Cuando los datos de caracteres C se convierten en datos SQL numéricos, de fecha, hora o marca de tiempo, se omiten los espacios en blanco iniciales y finales.

Cuando los datos de caracteres C se convierten en datos binarios de SQL, cada dos bytes de datos de caracteres se convierten en un solo byte (8 bits) de datos binarios. Cada dos bytes de datos de caracteres representa un número en formato hexadecimal. Por ejemplo, "01" se convierte en un 00000001 binario y "FF" se convierte en un 11111111 binario.

El controlador siempre convierte pares de dígitos hexadecimales en bytes individuales y omite el byte de terminación NULL. Por este motivo, si la longitud de la cadena de caracteres es impar, el último byte de la cadena (excepto el byte de terminación NULL, si existe) no se convierte.

Nota

No se recomienda a los desarrolladores de aplicaciones enlazar datos de caracteres C a un tipo de datos SQL binario. Esta conversión suele ser ineficaz y lenta.