Sie sind auf Seite 1von 6

CAST y CONVERT (TransactSQL)

Explcitamente convierte una expresin de un tipo de datos a otro. CAST y CONVERT proporcionan una funcionalidad similar. Convenciones de sintaxis de Transact-SQL

Sintaxis
Sintaxis para REPARTO: FUNDIDO (expresin AS data_type [(longitud)]) Sintaxis para convertir: CONVERT (data_type [(longitud)], la expresin [, estilo])

Argumentos
expresin Es vlida cualquier expresin . data_type Es el tipo de datos suministrado por el sistema de destino. Esto incluye xml , bigint y sql_variant . No se pueden usar tipos de datos de alias. Para obtener ms informacin sobre los tipos de datos disponibles, vea Tipos de datos (Transact-SQL) . longitud Es un parmetro opcional de nchar , nvarchar , Char , varchar , binarios o varbinary tipos de datos. Para CONVERT, si la longitud no se especifica, el valor predeterminado de 30 caracteres. estilo Es el estilo del formato de fecha que se utiliza para convertir datetime o smalldatetime en datos de caracteres de datos (nchar , nvarchar , carac , varchar , nchar o nvarchar tipos de datos), o para convertir los datos de caracteres de fecha o formatos de tiempo conocido datetime o smalldatetime datos , o el formato de cadena que se utiliza para convertirfloat , real, , dinero , o smallmoney datos para los datos de caracteres ( nchar , nvarchar , Char , varchar , nchar onvarchar tipos de datos). Cuando el estilo es NULL, el resultado devuelto tambin es NULL.

CONVERTIR es SQL Server especfica, REPARTO es ANSI. CONVERTIR es ms flexible ya que puede dar formato a fechas, etc Aparte de eso, ellos son ms o menos lo mismo. Si no se preocupan por las caractersticas extendidas, utilice CAST .
Adems, creo que hay algunas conversiones numricas donde REPARTO debe utilizarse para conservar la precisin, pero estoy teniendo problemas para encontrar una fuente confiable para obtener esta 1 informacin. - beruic 23 de mayo '13 a las 12:14

Conversin de tipo de datos ha sido una de las caractersticas ms utilizadas de cualquier lenguaje de programacin. Los usuarios de Microsoft SQL Server estn familiarizados con las dos funciones: CAST () y CONVERT () y los utilizan con regularidad, y ms especficamente, de forma intercambiable. Hace unos meses, yo haba escrito un post comparando el desempeo de REPARTO v / s CONVERT, y fue capaz de demostrar que no hay ninguna diferencia en el rendimiento de los dos functions.You puede leer ese post aqu: http://beyondrelational. com/blogs/nakul/archive/2011/01/03/cast-vs-convert.aspx . Recientemente, un colega y yo estbamos hablando de un elemento de diseo en particular y encontraron que era necesaria una conversin de tipo de datos. Durante esta discusin, las siguientes preguntas llegaron casi simultneamente a nuestras mentes

Si los resultados de rendimiento y finales son los mismos, cul es la diferencia entre REPARTO Y CONVERTIR aparte del hecho de que tienen diferentes elementos de sintaxis? Realmente necesitamos 2 funciones de conversin de datos?
REPARTO S Limitado CONVERTIR No (Los valores de fecha y hora Fecha apoyado) completa No hay diferencia ??

Parmetro Estndar ANSI Cobertura de tipo de datos Rendimiento

No hay diferencia

Implementacin ?? de Microsoft SQL Server Libros On Line Pgina

http://msdn.microsoft.com/en- http://msdn.microsoft.com/enus/library/ms187928.aspx us/library/ms187928.aspx

Por lo tanto, me encontr con una pequea prueba, y hoy en da, voy a compartir con ustedes mis hallazgos.

El REPARTO v / s CONVERT Prueba


La prueba es muy simple - tenemos dos instrucciones T-SQL idnticos, uno usando CAST, el otro utilizando CONVERT. Vamos a utilizar la ventana Propiedades de SSMS para analizar el plan de ejecucin y tratar de ver qu se puede encontrar acerca de la implementacin subyacente.

Vamos a echar un vistazo a nuestras declaraciones de prueba:


01./ *********************************************** ************ 02.Presione Ctrl + M ( o ir a la consulta de> Incluir plan de ejecucin real) 03.************************************************ ************ / 04.USE AdventureWorks2008R2 05.GO 06.- Utilice CONVERT 07.seleccionar CONVERT ( VARCHAR (10), BusinessEntityID) DE HumanResources.Employee 08. 09.- Utilice REPARTO 10.seleccione REPARTO (BusinessEntityID AS VARCHAR (10)) DESDE HumanResou rces.Employee

1. Conectarse a la instancia de SQL Server utilizando SQL Server Management Studio (SSMS) 2. Copia el cdigo T-SQL anterior en la ventana del editor de consultas de SSMS 3. Ejecute las instrucciones T-SQL anteriores en contra de su instancia de SQL Server 4. Cambie a la ficha Plan de ejecucin en el panel Resultados 5. En el panel de resultados, observe que tanto REPARTO Y CONVERTIR se han implementado como operadores "Compute Scalar"

6.

7. Pulse la tecla F4 o vaya a Ver -> Propiedades para abrir la ventana de propiedades 8. Expanda el nodo "valores definidos"

CONVERTIR aplicacin
CONVERT no llegar a ninguna sorpresa, y tiene una implementacin interna directa como se demuestra en la ventana Propiedades.

Aplicacin FUNDIDO
Cuando nos movemos a las propiedades de la consulta mediante la operacin CAST, vemos que bajo el cap, SQL Server hace que nos llevar a dar un paseo. Internamente, CAST se implementa como una llamada CONVERT. No hay ninguna diferencia entre REPARTO Y CONVERTIR adems del hecho de que CAST es un estndar ANSI, mientras CONVERT no lo es. No es de extraar tanto REPARTO Y CONVERTIR demostrar el mismo rendimiento.

Sorprendido? Prubelo usted mismo - yo no estaba preparado para ver lo que vi cuando me encontr por primera vez a travs de la prueba. Me reinicia el servidor entero y dieron una taza de caf para asegurarse de que no estaba soando! Conclusin Supongo que todo lo que tengo que hacer ahora es completar la pequea rejilla que tena anteriormente:
Parmetro Estndar ANSI Cobertura de tipo de datos Rendimiento REPARTO S Limitado CONVERTIR No (Los valores de fecha y hora Fecha apoyado) completa No hay diferencia CONVERTIR

No hay diferencia

Implementacin CONVERTIR de Microsoft SQL Server

Libros On Line Pgina

http://msdn.microsoft.com/en- http://msdn.microsoft.com/enus/library/ms187928.aspx us/library/ms187928.aspx

Qu me recomiendan?
Aunque ahora sabemos que a Microsoft SQL Server, la conversin de tipos de datos slo ocurre a travs de CONVERT, yo todava prefieren ir con REPARTO menos que yo estoy convirtiendo fechas o valores de fecha y hora. La razn es que CAST es un estndar ANSI, CONVERTIR no lo es. CONVERT es especfico de la implementacin, y por lo tanto puede cambiar en trminos de la cantidad de parmetros o procesos subyacentes. Para la llamada instruccin T-SQL, es seguro asumir que REPARTO permanecera sin cambios (a menos que los cambios estndar) y, por tanto, sera la responsabilidad de Microsoft SQL Server para traducir el CAST para una aplicacin CONVERT. No comparta su opinin sobre mitos y controversias que circulan en el mundo SQL Server convertir todo el REPARTO v / s. Estar ms que feliz de investigar ms y compartir mis hallazgos con usted. Hasta que nos encontremos la prxima vez, Sea corts. Conduzca responsabilidad. Etiquetas:

Das könnte Ihnen auch gefallen