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

 

**ESTE TEMA SE APLICA A:** ![](../Image/Applies%20to/yes.png)SQL Server \(a partir de 2008\) ![](../Image/Applies%20to/yes.png)Base de datos SQL de Azure ![](../Image/Applies%20to/yes.png)Almacenamiento de datos SQL de Azure ![](../Image/Applies%20to/yes.png)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 una columna de resultados, un código de retorno o un parámetro de salida de Transact-SQL se mueven a una variable de programa, se deben convertir del tipo de datos del sistema de SQL Server al tipo de datos de la variable.

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, si se comparan datos de tipo smallint con datos de tipo int, antes de realizar la comparación los datos de tipo smallint se convierten implícitamente al tipo int.

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.

Las funciones CAST y CONVERT convierten un valor (una variable local, una columna u otra expresión) 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. Incluyen xml, bigint y sql_variant. No existe una conversión implícita en la asignación del tipo de datos sql_variant, pero sí hay una conversión implícita en 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 valor nchar no se puede convertir a un valor image. Un valor nchar solo se puede convertir a binary con una conversión explícita; la conversión implícita a binary no se admite. Sin embargo, un valor nchar se 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)
date (Transact-SQL)float y real (Transact-SQL)hora (Transact-SQL)
datetime (Transact-SQL)int, bigint, smallint y tinyint (Transact-SQL)uniqueidentifier (Transact-SQL)

Convertir tipos de datos con procedimientos almacenados de automatización OLE

SQL Server utiliza tipos de datos Transact-SQL y la automatización OLE utiliza tipos de datos Visual Basic; por tanto, los procedimientos almacenados de automatización OLE 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, text, nvarchar, ntextString
decimal, numericString
bitBoolean
binary, varbinary, imageMatriz Byte() unidimensional
intLong
smallintInteger
tinyintByte
floatDouble
realSingle
money, smallmoneyCurrency
datetime, smalldatetimeDate
Cualquiera establecido en NULLVariant establecido en NULL

Los valores únicos de SQL Server se convierten a un valor único de Visual Basic, con la excepción de los valores binary, varbinary e image. Estos valores se convierten a una matriz Byte() unidimensional en Visual Basic. Esta matriz incluye un intervalo de Byte(0 a length1) en que length es el número de bytes de los valores de SQL Server binary, varbinary o image.

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, Integer, Byte, Boolean, Objectint
Double, Singlefloat
Currencymoney
Datedatetime
String con 4.000 caracteres o menosvarchar/nvarchar
String con más de 4.000 caracterestext/ntext
Matriz Byte() unidimensional con 8.000 bytes o menosvarbinary
Matriz Byte() unidimensional con más de 8.000 bytesimage

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

Adiciones de comunidad

Mostrar: