Conversiones de tipos de datos (motor de base de datos)

 

ESTE TEMA SE APLICA A: síSQL Server (a partir de 2008)síBase de datos SQL de AzuresíAlmacenamiento de datos SQL de Azure síAlmacenamiento de datos paralelos

Los tipos de datos se pueden convertir en los siguientes casos:

  • Cuando los datos de un objeto se comparan o se combinan con los datos de otro objeto, o bien se mueven a estos, puede que sea necesario convertir los datos desde el tipo de datos de un objeto al tipo de datos del otro.

  • Cuando los datos de un Transact-SQL columna de resultados, código de retorno o parámetro de salida se mueve a una variable de programa, deben convertir los datos desde el SQL Server al tipo de datos de la variable de tipo de datos de sistema.

Cuando se realiza una conversión entre una variable de aplicación y una columna de conjunto de resultados, código de retorno, parámetro o marcador de parámetro de SQL Server, la API de base de datos define cuáles son las conversiones de tipos de datos admitidas.

Los tipos de datos se pueden convertir de forma implícita o explícita.

Las conversiones implícitas no son visibles para el usuario. SQL Server convierte automáticamente los datos de un tipo de datos al otro. Por ejemplo, cuando un smallint se compara con un int, el smallint se convierte implícitamente en int antes de realizar la comparación.

GETDATE() convierte implícitamente al estilo de fecha 0. SYSDATETIME() convierte implícitamente al estilo de fecha 21.

Las conversiones explícitas utilizan las funciones CAST o CONVERT.

El CAST y CONVERT funciones convierten un valor (una variable local, una columna o expresión otro) de un tipo de datos a otro. Por ejemplo, la siguiente función CAST convierte el valor numérico $157.27 a una cadena de caracteres '157.27':

CAST ( $157.27 AS VARCHAR(10) )  

Utilice CAST en lugar de CONVERT si desea que el código de programa de Transact-SQL cumpla las normas ISO. Use CONVERT en lugar de CAST para aprovechar la funcionalidad de estilo de CONVERT.

En la ilustración siguiente se muestran todas las conversiones de tipos de datos explícitas e implícitas permitidas para los tipos de datos proporcionados por el sistema de SQL Server. Puede tratarse de xml, bigint, y sql_variant. No hay ninguna conversión implícita en la asignación de la sql_variant tipo de datos, pero no hay conversión implícita a sql_variant.

Data type conversion table

Algunas conversiones implícitas y explícitas de tipos de datos no se admiten cuando convierte el tipo de datos de un objeto de SQL Server a otro. Por ejemplo, un nchar valor no puede convertirse a un imagen valor. Un nchar sólo se puede convertir a binario mediante el uso de conversión explícita, una conversión implícita a binario no se admite. Sin embargo, un nchar puede convertir implícita o explícitamente a nvarchar.

En los temas siguientes se describen los comportamientos de conversión que presentan los tipos de datos correspondientes:

binary y varbinary ( Transact-SQL )datetime2 ( Transact-SQL )Money y smallmoney ( Transact-SQL )
bit ( Transact-SQL )DateTimeOffset ( Transact-SQL )smalldatetime ( Transact-SQL )
char y varchar ( Transact-SQL )decimal y numeric ( Transact-SQL )sql_variant ( Transact-SQL )
fecha ( Transact-SQL )float y real ( Transact-SQL )tiempo ( Transact-SQL )
fecha y hora ( Transact-SQL )int, bigint, smallint y tinyint ( Transact-SQL )uniqueidentifier ( Transact-SQL )

Convertir tipos de datos mediante el uso de automatización OLE de procedimientos almacenados

SQL Server utiliza tipos de datos Transact-SQL y OLE Automation utiliza tipos de datos Visual Basic; por tanto, los procedimientos almacenados de OLE Automation deben convertir los datos que se pasan entre ellos.

En la tabla siguiente se describen las conversiones de tipos de datos de SQL Server a Visual Basic.

Tipo de datos de SQL ServerTipo de datos de Visual Basic
char, varchar, texto, nvarchar, ntextCadena
decimal, numéricoCadena
bitsValor booleano
binario, varbinary, imagenUnidimensional Byte() matriz
intLong
smallintEntero
tinyintBytes
floatDoble
realÚnico
money, smallmoneyMoneda
fecha y hora, smalldatetimeDate
Cualquiera establecido en NULLVariant establecido en Null

Todos los único SQL Server valores se convierten en una sola Visual Basic valor con la excepción de binario, varbinary, y imagen valores. Estos valores se convierten en un unidimensional Byte() la matriz en Visual Basic. Esta matriz tiene un intervalo de bytes (0 para longitud1) donde longitud es el número de bytes en el SQL Server binario, varbinary, o imagen valores.

A continuación se indican las conversiones de tipos de datos de Visual Basic a tipos de datos de SQL Server.

Tipo de datos de Visual BasicTipo de datos de SQL Server
Long, entero, bytes, booleano, objetoint
Doble, únicofloat
MonedaMoney
Datefecha y hora
Cadena con 4.000 caracteres o menosvarchar/nvarchar
Cadena con más de 4.000 caracterestexto/ntext
Unidimensional Byte() matriz con 8.000 bytes o menosvarbinary
Unidimensional Byte() matriz con más de 8.000 bytes.image

Procedimientos ( almacenados de automatización OLE Transact-SQL )
CAST y CONVERT ( Transact-SQL )
Tipos de datos ( Transact-SQL )
COLLATE ( Transact-SQL )

Adiciones de comunidad

AGREGAR
Mostrar: