Vous êtes sur la page 1sur 17

Este artculo se tradujo de forma manual.

Mueva el puntero sobre las frases del artculo para ver el texto original. Ms informacin.

Traduccin

Original

CAST y CONVERT (Transact-SQL)


SQL Ser ver 2012 Personas que lo han encontrado til: 8 de 15 Convierte una expresin de un tipo de datos en otro en SQL Server 2012. Convenciones de sintaxis de Transact-SQL

Sintaxis

S y n t a xf o rC A S T : C A S T(e x p r e s s i o nA Sd a t a _ t y p e[(l e n g t h)])

S y n t a xf o rC O N V E R T : C O N V E R T(d a t a _ t y p e[(l e n g t h)],e x p r e s s i o n[,s t y l e])

Argumentos
expression Es cualquier expresin vlida. data_type Es el tipo de datos de destino. Incluye xml , b ig int y s q l_va r ia nt . No se pueden utilizar tipos de datos de alias. length

Es un nmero entero opcional que especifica la longitud del tipo de datos de destino. El valor predeterminado es 30.

style

Es una expresin de tipo entero que especifica cmo la funcin CONVERT traducir expression. Si style es NULL, se devuelve NULL. data_type determina el intervalo. Para obtener ms informacin, vea la seccin Comentarios.

Tipos de valor devueltos


Devuelve el tipo expression traducido al tipo data_type.

Comentarios

Estilos de fecha y hora


Cuando expression es un tipo de datos de fecha u hora, style puede ser uno de los valores que se muestran en la tabla siguiente. Otros valores se procesan como 0. A partir de SQL Server 2012, los nicos estilos que se admiten al convertir desde tipos de fecha y hora a d a tetimeo ffs et son 0 o 1. Todos los dems estilos de conversin devuelven el error 9809. SQL Server admite el formato de fecha en estilo rabe mediante el algoritmo kuwait. Sin el s ig lo (a a ) (1) Co n el s ig lo (a a a a ) 0o 100 (1,2) 101

E s t nd a r

E ntr a d a /s a lid a ( 3 )

Predeterminado

mes dd aaaa hh:mia.m. (o p.m.)

EE. UU.

1 = mm/dd/aa 101 = mm/dd/aaaa 2 = aa.mm.dd 102 = aaaa.mm.dd 3 = dd/mm/aa 103 = dd/mm/aaaa 4 = dd.mm.aa 104 = dd.mm.aaaa 5 = dd-mm-aa 105 = dd-mm-aaaa 6 = dd mes aa 106 = dd mes aaaa 7 = Mes dd, aa 107 = Mes dd, aaaa hh:mi:ss mes dd aaaa hh:mi:ss:mmma.m. (o p.m.)

102

ANSI

103

Britnico/Francs

104

Alemn

105

Italiano

106 (1) 107 (1) 108 9 109 (1,2)

8 -

Valor predeterminado + milisegundos

10

110

EE. UU.

10 = mm-dd-aa 110 = mm-dd-aaaa 11 = aa/mm/dd 111 = aaaa/mm/dd 12 = aammdd

11

111

JAPN

12

112

ISO

112 = aaaammdd 13 o 113 (1,2) 114 20 120 (2) 21 121 (2) 126 (4) Europeo predeterminado + milisegundos ODBC cannico dd mes aaaa hh:mi:ss:mmm(24h)

14 -

hh:mi:ss:mmm(24h) aaaa-mm-dd hh:mi:ss(24h)

ODBC cannico (con milisegundos) ISO8601

aaaa-mm-dd hh:mi:ss.mmm(24h)

aaaa-mm-ddThh:mi:ss.mmm (sin espacios) No ta Cuando el valor para milisegundos (mmm) es 0, no se muestra el valor de milisegundos. Por ejemplo, el valor '2012-11-07T18:26:20.000' se muestra como '2012-11-07T18:26:20'.

127 (6, 7)

ISO8601 con zona horaria Z.

aaaa-mm-ddThh:mi:ss.mmmZ (sin espacios) No ta Cuando el valor para milisegundos (mmm) es 0, no se muestra el valor de milisegundos. Por ejemplo, el valor '2012-11-07T18:26:20.000' se muestra como '2012-11-07T18:26:20'.

130 (1,2)

Hijri (5)

dd mes aaaa hh:mi:ss:mmma.m. En este estilo, mes es una representacin Unicode Hijri multitoken del nombre completo del mes. Este valor no se representar correctamente en una instalacin estadounidense predeterminada de SSMS.

131 (2)

Hijri (5)

dd/mm/aaaa hh:mi:ss:mmma.m.

1 Estos valores de estilo devuelven resultados no deterministas. Incluye todos los estilos (aa) (sin el siglo) y un subconjunto de estilos (aaaa) (con el siglo). 2 Los valores predeterminados (style0 o 100 , 9 o 109 , 13 o 113 , 20 o 120 y 21 o 121 ) siempre devuelven el siglo (aaaa). 3 Entrada cuando se convierte en d a tetime ; salida cuando se convierte en datos de caracteres. 4 Diseado para usarse con XML. Para convertir datos d a tetime o s ma lld a tetime en datos de caracteres, el formato de salida es el descrito en la tabla anterior.

5 Hijri es un sistema del calendario con varias variaciones. SQL Server utiliza el algoritmo kuwait. Imp o r ta nte De forma predeterminada, SQL Server interpreta los aos de dos dgitos segn el ao lmite 2049. Es decir, el ao 49 de dos dgitos se interpreta como 2049 y el ao 50 de dos dgitos se interpreta como 1950. Muchas aplicaciones cliente, como las que se basan en objetos de automatizacin, utilizan el ao lmite de 2030. SQL Server proporciona la opcin de configuracin two digit year cutoff que cambia el ao lmite usado por SQL Server y permite el tratamiento coherente de fechas. Se recomienda especificar aos de cuatro dgitos. 6 Solo se admite en la conversin de datos de caracteres a d a tetime o s ma lld a tetime . Cuando se convierten datos de caracteres que representan componentes de solo fecha o solo hora al tipo de datos d a tetime o s ma lld a tetime , el componente de hora no especificado se establece en 00:00:00.000 y el componente de fecha no especificado se establece en 1900-01-01. 7El indicador opcional de zona horaria, Z, se usa para facilitar la asignacin de valores XML de tipo d a tetime que contienen informacin de zona horaria a valores de tipo d a tetime de SQL Server que no tienen zona horaria. Z es el indicador para la zona horaria UTC-0. Las otras zonas horarias se indican con un desplazamiento de HH:MM en sentido + o -. Por ejemplo: 2 0 0 6 1 2 1 2 T 2 3 : 4 5 : 1 2 0 8 : 0 0 . Cuando se convierten datos de caracteres de tipo s ma lld a tetime , los estilos que incluyen segundos o milisegundos muestran ceros en dichas posiciones. Puede truncar las partes de la fecha no deseadas cuando convierta valores d a tetime o s ma lld a tetime si utiliza una longitud apropiada en el tipo de datos cha r o va r cha r . Cuando se convierte en d a tetimeo ffs et a partir de datos de caracteres con un estilo que incluye una hora, se anexa un ajuste de zona horaria al resultado.

Estilos float y real


Cuando expression es flo a t o r ea l , style puede ser uno de los valores que se muestran en la tabla siguiente. Otros valores se procesan como 0. Va lo r 0 (valor predeterminado) 1 2 126, 128, 129 Sa lid a Un mximo de 6 dgitos. Utilcelo en notacin cientfica cuando proceda. Siempre 8 dgitos. Utilcelo siempre en notacin cientfica. Siempre 16 dgitos. Utilcelo siempre en notacin cientfica. Se incluye por razones heredadas y podra quedar desusado en una versin futura.

Estilos money y smallmoney


Cuando expression es mo ney o s ma llmo ney , style, puede ser uno de los valores que se muestran en la tabla siguiente. Otros valores se procesan como 0. Va lo r 0 (valor predeterminado) 1 Sa lid a Sin separadores de millar cada tres dgitos a la izquierda del separador decimal y dos dgitos a la derecha del separador decimal; por ejemplo, 4235,98. Separadores de millar cada tres dgitos a la izquierda del separador decimal y dos dgitos a la derecha del separador decimal; por ejemplo, 3.510,92.

Sin separadores de millar cada tres dgitos a la izquierda del separador decimal y cuatro dgitos a la derecha del separador decimal; por ejemplo, 4235,9819. Equivalente al estilo 2 al convertir a char(n) o varchar(n)

126

Estilos xml
Cuando expression es xml , style, puede ser uno de los valores que se muestran en la tabla siguiente. Otros valores se procesan como 0. Va lo r 0 (valor predeterminado) Sa lid a Utiliza el comportamiento de anlisis predeterminado que descarta los espacios en blanco insignificantes y no permite un subconjunto DTD interno. No ta Al convertir al tipo de datos xml , los espacios en blanco insignificantes de SQL Server se controlan de forma distinta que en XML 1.0. Para obtener ms informacin, vea Crear instancias de datos XML.

Conserva los espacios en blanco insignificantes. Esta configuracin establece el control xml:s p a ce predeterminado de modo que se comporte igual que si se hubiera especificado xml:s p a ce="p r es er ve" . Habilita el procesamiento limitado de subconjuntos DTD internos. Si est habilitado, el servidor puede utilizar la siguiente informacin proporcionada en un subconjunto DTD interno para realizar operaciones de anlisis que no se validan. Se aplican los valores predeterminados de los atributos. Las referencias a entidades internas se resuelven y se amplan. Se comprobar la correccin sintctica del modelo de contenido DTD. El analizador pasar por alto los subconjuntos DTD externos. Tampoco evala la declaracin XML para ver si el atributo s ta nd a lo ne est establecido en yes o no , pero analiza la instancia XML como si se tratase de un documento independiente.

Conserva los espacios en blanco insignificantes y habilita el procesamiento limitado de los subconjuntos DTD internos.

Estilos binarios
Cuando expression es b ina r y(n) , va r b ina r y(n) , cha r (n) o va r cha r (n) , style puede ser uno de los valores que se muestran en la tabla siguiente. Los valores de estilos que no se enumeran en la tabla devuelven un error. Va lo r 0 (predeterminado) Sa lid a Traduce caracteres ASCII a bytes binarios o bytes binarios a caracteres ASCII. Cada carcter o byte se convierte con una proporcin 1:1. Si data_type es un tipo binario, los caracteres 0x se agregan a la izquierda del resultado. Si data_type es un tipo binario, la expresin debe ser de caracteres. expression se debe componer de un nmero par de dgitos hexadecimales (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a,

1, 2

b, c, d, e, f). Si style se establece en 1, los caracteres 0x deben ser los dos primeros caracteres de la expresin. Si la expresin contiene un nmero impar de caracteres o si alguno de los caracteres no es vlido, se produce un error. Si la longitud de la expresin convertida es mayor que la longitud de data_type, el resultado se truncar a la derecha. Los data_types de longitud fija que sean mayores que el resultado convertido tendrn ceros agregados a la derecha del resultado. Si data_type es un tipo de caracteres, la expresin debe ser binaria. Cada carcter binario se convierte en dos caracteres hexadecimales. Si la longitud de la expresin convertida es mayor que la longitud de data_type, se truncar a la derecha. Si data_type es un tipo de caracteres de tamao fijo y la longitud del resultado convertido es menor que la longitud de data_type, los espacios se agregan a la derecha de la expresin convertida para mantener un nmero par de dgitos hexadecimales. Los caracteres 0x se agregarn a la izquierda del resultado convertido para style 1.

Conversiones implcitas
Las conversiones implcitas son aquellas conversiones que tienen lugar sin especificar las funciones CAST o CONVERT. Las conversiones explcitas son aquellas conversiones que requieren la especificacin de las funciones CAST o CONVERT. En la siguiente ilustracin se muestran todas las conversiones de tipos de datos explcitas e implcitas permitidas para los tipos de datos proporcionados por el sistema de SQL Server. Incluyen xml , b ig int y s q l_va r ia nt . No existe una conversin implcita en la asignacin del tipo de datos s q l_va r ia nt , pero s hay una conversin implcita en s q l_va r ia nt . Sug er encia Este grfico est disponible como archivo PDF para descargar en el Centro de descarga Microsoft.

Al convertir entre d a tetimeo ffs et y los tipos de caracteres cha r , va r cha r , ncha r y nva r cha r , la parte del ajuste de zona horaria convertida siempre debe tener dgitos dobles para HH y MM, por ejemplo -08:00. No ta Puesto que los datos Unicode siempre utilizan un nmero par de bytes, preste atencin al convertir datos b ina r y o va r b ina r y en o desde tipos de datos compatibles con Unicode. Por ejemplo, la siguiente conversin no devuelve el valor hexadecimal 41, sino 4100: S E L E C TC A S T ( C A S T ( 0 x 4 1A Sn v a r c h a r )A Sv a r b i n a r y ) .

Tipos de datos de valor grande


Los tipos de datos de valor grande tienen el mismo comportamiento de conversin implcito y explcito que sus equivalentes ms pequeos, especialmente los tipos de datos va r cha r , nva r cha r y va r b ina r y . No obstante, se deben tener en cuenta las siguientes directrices: La conversin de datos ima g e en va r b ina r y(ma x) y viceversa es una conversin implcita, al igual que las

conversiones entre text y va r cha r (ma x) y entre ntext y nva r cha r (ma x) . La conversin de tipos de datos de valor grande, como va r cha r (ma x) , en un tipo de datos equivalente ms pequeo, como va r cha r , es una conversin implcita, aunque se producir truncamiento si el valor grande es demasiado grande para la longitud especificada del tipo de datos ms pequeo. La conversin de va r cha r , nva r cha r o va r b ina r y en sus tipos de datos correspondientes de valor grande se realiza de forma implcita. La conversin del tipo de datos s q l_va r ia nt en los tipos de datos de valor grande es una conversin explcita. Los tipos de datos de valor grande no se pueden convertir en el tipo de datos s q l_va r ia nt . Para obtener ms informacin acerca de la conversin del tipo de datos xml , vea Crear instancias de datos XML.

xml Data Type


Cuando se convierte de forma explcita o implcita el tipo de datos xml en un tipo de datos de cadena o binario, el contenido del tipo de datos xml se serializa en funcin de un conjunto de reglas. Para obtener informacin sobre estas reglas, vea Definir la serializacin de datos XML. Para obtener informacin sobre la conversin de otros tipos de datos al tipo de datos xml , vea Crear instancias de datos XML.

Tipos de datos text e image


No se admite la conversin automtica de los tipos de datos text e ima g e . Puede convertir explcitamente datos text en datos de caracteres y datos ima g e en b ina r y o va r b ina r y , pero la longitud mxima es de 8000 bytes. Si intenta una conversin incorrecta, como la de una expresin de caracteres que incluye letras en un tipo int , SQL Server devuelve un mensaje de error.

Intercalacin de salida
Cuando la salida de CAST o CONVERT es una cadena de caracteres y la entrada es otra, la salida tiene la misma intercalacin y etiqueta de intercalacin que la entrada. Si la entrada no es una cadena de caracteres, la salida tiene la intercalacin predeterminada de la base de datos y una etiqueta de intercalacin coaccionable-predeterminada. Para obtener ms informacin, vea Prioridad de intercalacin (Transact-SQL). Para asignar otra intercalacin a la salida, aplique la clusula COLLATE a la expresin de resultado de las funciones CAST o CONVERT. Por ejemplo: S E L E C TC A S T ( ' a b c 'A Sv a r c h a r ( 5 ) )C O L L A T EF r e n c h _ C S _ A S

Truncar y redondear resultados


Al convertir expresiones de caracteres o binarias (cha r , ncha r , nva r cha r , va r cha r , b ina r y o va r b ina r y ) en una expresin de un tipo de datos diferente, los datos se pueden truncar, se pueden presentar parcialmente o se puede devolver un error porque el resultado es demasiado corto para ser mostrado. Las conversiones en cha r , va r cha r , ncha r , nva r cha r , b ina r y y va r b ina r y se truncan, excepto aquellas que se muestran en la siguiente tabla. De tip o d e d a to s int , s ma llint o tinyint E n tip o d e d a to s cha r va r cha r ncha r nva r cha r Res ulta d o * * E E

mo ney , s ma llmo ney , numer ic , d ecima l , flo a t o r ea l

cha r va r cha r ncha r nva r cha r

E E E E

* = Resultado demasiado corto para ser mostrado. E = Error devuelto porque el resultado es demasiado corto para ser mostrado. SQL Server garantiza que solo las conversiones circulares, las conversiones que convierten un tipo de datos en otro y despus vuelven a convertirlo en el tipo de datos original, devolvern los mismos valores en versiones diferentes. En el siguiente ejemplo se muestra una conversin circular:

D E C L A R E@ m y v a ld e c i m a l( 5 ,2 ) ; S E T@ m y v a l=1 9 3 . 5 7 ; S E L E C TC A S T ( C A S T ( @ m y v a lA Sv a r b i n a r y ( 2 0 ) )A Sd e c i m a l ( 1 0 , 5 ) ) ; -O r ,u s i n gC O N V E R T S E L E C TC O N V E R T ( d e c i m a l ( 1 0 , 5 ) ,C O N V E R T ( v a r b i n a r y ( 2 0 ) ,@ m y v a l ) ) ;

No ta No intente crear valores b ina r y y despus convertirlos a un tipo de datos de la categora de datos numricos. SQL Server no garantiza que el resultado de una conversin de tipos de datos d ecima l o numer ic a b ina r y sea idntica en las distintas versiones de SQL Server. En el siguiente ejemplo se muestra una expresin resultante demasiado corta para ser mostrada.

U S EA d v e n t u r e W o r k s 2 0 1 2 ; G O S E L E C Tp . F i r s t N a m e ,p . L a s t N a m e ,S U B S T R I N G ( p . T i t l e ,1 ,2 5 )A ST i t l e ,C A S T ( e . S i c k L e a v e H o u r sA Sc h a r ( 1 ) )A S F R O MH u m a n R e s o u r c e s . E m p l o y e eeJ O I NP e r s o n . P e r s o npO Ne . B u s i n e s s E n t i t y I D=p . B u s i n e s s E n t i t y I D W H E R EN O Te . B u s i n e s s E n t i t y I D> 5 ;

El conjunto de resultados es el siguiente. F i r s t N a m e K e n T e r r i R o b e r t o R o b G a i l L a s t N a m e T i t l e S i c kL e a v e

--S a n c h e z D u f f y T a m b u r e l l o W a l t e r s E r i c k s o n N U L L N U L L N U L L N U L L M s . * * * * *

( 5r o w ( s )a f f e c t e d ) Al convertir tipos de datos que difieren en los decimales, algunas veces el valor resultante se trunca y otras se redondea. En la siguiente tabla se muestra el comportamiento. De numer ic numer ic numer ic mo ney mo ney flo a t flo a t En numer ic int mo ney int numer ic int numer ic Co mp o r ta miento Redondeo Truncar Redondear Redondear Redondeo Truncamiento Redondeo La conversin de los valores flo a t que utilizan la notacin cientfica a d ecima l o numer ic se restringe nicamente a los valores con una precisin de 17 dgitos. Cualquier valor con una precisin mayor de 17 se redondea a cero. Redondeo Redondeo

flo a t d a tetime

d a tetime int

Por ejemplo, el resultado de la siguiente conversin es 1 0 : S E L E C TC A S T ( 1 0 . 6 4 9 6A Si n t ) ; Al convertir tipos de datos cuando el tipo de datos de destino tiene menos decimales que el tipo de datos de origen, el valor se redondea. Por ejemplo, el resultado de la siguiente conversin es $ 1 0 . 3 4 9 7 : S E L E C TC A S T ( 1 0 . 3 4 9 6 8 4 7A Sm o n e y ) ; SQL Server devuelve un mensaje de error cuando se convierten datos cha r , ncha r , va r cha r o nva r cha r no numricos en los tipos de datos int , flo a t , numer ic o d ecima l . SQL Server tambin devuelve un error cuando se convierte una cadena vaca (" ") en los tipos de datos numer ic o d ecima l .

Determinadas conversiones de fecha y hora son no deterministas en SQL Server 2005 y versiones posteriores
En SQL Server 2000, las conversiones de cadena a fecha y hora se marcan como deterministas. Sin embargo, esto no se aplica a los estilos descritos en la siguiente tabla. Para estos estilos, las conversiones dependen de la configuracin de idioma. SQL Server 2005 y las versiones posteriores marcan estas conversiones como no deterministas. En la siguiente tabla se muestran los estilos para los que la conversin de cadena a fecha y hora es no determinista. Todos los estilos por debajo de 1001 107 106 109

113 1 Con la excepcin de los estilos 20 y 21

130

Caracteres adicionales (pares suplentes)


A partir de SQL Server 2012, si utiliza intercalaciones de caracteres complementarios (SC), una operacin CAST de ncha r o nva r cha r a un tipo ncha r o nva r cha r de menor longitud no realizar el truncamiento dentro de un par suplente; lo har antes del carcter complementario. Por ejemplo, el fragmento de cdigo siguiente deja @ xcon solo ' a b ' . No hay espacio suficiente para albergar el carcter suplementario.

D E C L A R E@ xN V A R C H A R ( 1 0 )=' a b '+N C H A R ( 0 x 1 0 0 0 0 ) ; S E L E C TC A S T( @ xA SN V A R C H A R ( 3 ) ) ; Al utilizar intercalaciones de SC, el comportamiento de C O N V E R Tes anlogo al de C A S T .

Soporte de compatibilidad
En versiones anteriores a SQL Server, el estilo predeterminado de las operaciones CAST y CONVERT en tipos de datos time y d a tetime2 es 121, a menos que se utilice otro tipo en una expresin de columna calculada. Para las columnas calculadas, el estilo predeterminado es 0. Este comportamiento afecta a las columnas calculadas cuando se crean, cuando se utilizan en las consultas que implican parametrizacin automtica o cuando se usan en definiciones de restricciones. Bajo el nivel de compatibilidad 110, el estilo predeterminado de las operaciones CAST y CONVERT en los tipos de datos time y d a tetime2 es siempre 121. Si su consulta se basa en el comportamiento anterior, use un nivel de compatibilidad menor de 110, o especifique explcitamente el estilo 0 en la consulta correspondiente. Actualizar la base de datos al nivel de compatibilidad 110 no cambiar los datos de usuario que se hayan almacenado en disco. Debe corregir manualmente estos datos segn convenga. Por ejemplo, si utilizara SELECT INTO para crear una tabla de un origen que contuviera una expresin de columna calculada como la descrita anteriormente, se almacenaran los datos (si se usa el estilo 0) en lugar de la propia definicin de columna calculada. Debera actualizar manualmente estos datos para que coincidieran con el estilo 121.

Ejemplos
A.Utilizar CAST y CONVERT
En cada ejemplo se recupera el nombre de aquellos productos que tienen un 3como primer dgito del precio y se convierte L i s t P r i c een i n t .

-U s eC A S T U S EA d v e n t u r e W o r k s 2 0 1 2 ; G O S E L E C TS U B S T R I N G ( N a m e ,1 ,3 0 )A SP r o d u c t N a m e ,L i s t P r i c e F R O MP r o d u c t i o n . P r o d u c t W H E R EC A S T ( L i s t P r i c eA Si n t )L I K E' 3 % ' ; G O -U s eC O N V E R T . U S EA d v e n t u r e W o r k s 2 0 1 2 ;

G O S E L E C TS U B S T R I N G ( N a m e ,1 ,3 0 )A SP r o d u c t N a m e ,L i s t P r i c e F R O MP r o d u c t i o n . P r o d u c t W H E R EC O N V E R T ( i n t ,L i s t P r i c e )L I K E' 3 % ' ; G O

B.Utilizar CAST con operadores aritmticos


En el siguiente ejemplo se calcula una nica columna (C o m p u t e d ) mediante la divisin de las ventas anuales hasta la fecha (S a l e s Y T D ) entre el porcentaje de la comisin (C o m m i s s i o n P C T ). El resultado se convierte en un tipo de datos i n t despus de redondearlo al nmero entero ms prximo.

U S EA d v e n t u r e W o r k s 2 0 1 2 ; G O S E L E C TC A S T ( R O U N D ( S a l e s Y T D / C o m m i s s i o n P C T ,0 )A Si n t )A SC o m p u t e d F R O MS a l e s . S a l e s P e r s o n W H E R EC o m m i s s i o n P C T! =0 ; G O El conjunto de resultados es el siguiente. C o m p u t e d 3 7 9 7 5 3 7 5 4 3 4 6 6 9 8 3 4 9 2 5 7 1 4 4 2 4 2 1 7 6 4 9 3 8 9 9 2 8 1 1 0 1 2 7 2 0 3 0 1 8 7 2 5 4 9 2 1 2 6 2 3 7 5 0 2 9 8 9 4 8 2 0 2 2 5 0 7 8 4 1 1 9 2 3 9 2 4 6 8 9 0 1 0 1 6 6 4 2 2 0 1 2 4 5 1 1 3 3 6 9 7 6 8 8 1 0 7

( 1 4r o w ( s )a f f e c t e d )

C.Utilizar CAST para concatenar


En el siguiente ejemplo se concatenan expresiones no binarias que no son de caracteres mediante C A S T .

U S EA d v e n t u r e W o r k s 2 0 1 2 ; G O S E L E C T' T h el i s tp r i c ei s'+C A S T ( L i s t P r i c eA Sv a r c h a r ( 1 2 ) )A SL i s t P r i c e F R O MP r o d u c t i o n . P r o d u c t W H E R EL i s t P r i c eB E T W E E N3 5 0 . 0 0A N D4 0 0 . 0 0 ; G O El conjunto de resultados es el siguiente. L i s t P r i c e T h el i s tp r i c ei s3 5 7 . 0 6 T h el i s tp r i c ei s3 6 4 . 0 9 T h el i s tp r i c ei s3 6 4 . 0 9 T h el i s tp r i c ei s3 6 4 . 0 9 T h el i s tp r i c ei s3 6 4 . 0 9

( 5r o w ( s )a f f e c t e d )

D.Utilizar CAST para obtener texto ms legible


En el siguiente ejemplo se utiliza C A S Ten la lista de seleccin para convertir la columna N a m een una columna de tipo c h a r ( 1 0 ) .

U S EA d v e n t u r e W o r k s 2 0 1 2 ; G O S E L E C TD I S T I N C TC A S T ( p . N a m eA Sc h a r ( 1 0 ) )A SN a m e ,s . U n i t P r i c e F R O MS a l e s . S a l e s O r d e r D e t a i lA Ss J O I NP r o d u c t i o n . P r o d u c tA Sp O Ns . P r o d u c t I D=p . P r o d u c t I D W H E R EN a m eL I K E' L o n g S l e e v eL o g oJ e r s e y ,M ' ; G O El conjunto de resultados es el siguiente. N a m e U n i t P r i c e

-L o n g S l e e v3 1 . 2 4 3 7 L o n g S l e e v3 2 . 4 9 3 5

L o n g S l e e v4 9 . 9 9

( 3r o w ( s )a f f e c t e d )

E.Utilizar CAST con la clusula LIKE


En el siguiente ejemplo se convierte la columna S a l e s Y T Dde tipo m o n e yen una de tipo i n ty, a continuacin, en una de tipo c h a r ( 2 0 )para que se pueda utilizar con la clusula L I K E .

U S EA d v e n t u r e W o r k s 2 0 1 2 ; G O S E L E C Tp . F i r s t N a m e ,p . L a s t N a m e ,s . S a l e s Y T D ,s . B u s i n e s s E n t i t y I D F R O MP e r s o n . P e r s o nA Sp J O I NS a l e s . S a l e s P e r s o nA Ss O Np . B u s i n e s s E n t i t y I D=s . B u s i n e s s E n t i t y I D W H E R EC A S T ( C A S T ( s . S a l e s Y T DA Si n t )A Sc h a r ( 2 0 ) )L I K E' 2 % ' ; G O El conjunto de resultados es el siguiente. F i r s t N a m e L a s t N a m e S a l e s Y T D S a l e s P e r s o n I D

---T s v i S y e d R a c h e l R e i t e r A b b a s V a l d e z 2 8 1 1 0 1 2 . 7 1 5 1 2 1 9 0 8 8 . 8 8 3 6 2 2 4 1 2 0 4 . 0 4 2 4 2 7 9 2 8 8 2 8 9

( 3r o w ( s )a f f e c t e d )

F.Utilizar CONVERT o CAST con XML con tipo


A continuacin se incluyen varios ejemplos en los que se muestra el uso de CONVERT para convertir XML con tipo mediante el Tipo de datos XML y columnas (SQL Server). En este ejemplo se convierte una cadena con espacios en blanco, texto y marcado en XML con tipo y se quitan todos los espacios en blanco insignificantes (espacios en blanco de lmite entre los nodos):

C O N V E R T ( X M L ,' < r o o t > < c h i l d / > < / r o o t > ' ) En este ejemplo se convierte una cadena similar con espacios en blanco, texto y marcado en XML con tipo y se conservan los espacios en blanco insignificantes (espacios en blanco de lmite entre los nodos):

C O N V E R T ( X M L ,' < r o o t >

< c h i l d / >

< / r o o t > ' ,1 )

En este ejemplo se convierte una cadena con espacios en blanco, texto y marcado en XML con tipo:

C A S T ( ' < N a m e > < F N a m e > C a r o l < / F N a m e > < L N a m e > E l l i o t < / L N a m e > < / N a m e > ' A SX M L ) Para obtener ms ejemplos, vea Crear instancias de datos XML.

G.Utilizar CAST y CONVERT con datos de fecha y hora


En el ejemplo siguiente se muestra la fecha y la hora actuales, se utiliza C A S Tpara cambiarlas a un tipo de datos de carcter y, a continuacin, se utiliza C O N V E R Tpara mostrar la fecha y la hora en el formato I S O8 9 0 1 .

S E L E C T G E T D A T E ( )A SU n c o n v e r t e d D a t e T i m e , C A S T ( G E T D A T E ( )A Sn v a r c h a r ( 3 0 ) )A SU s i n g C a s t , C O N V E R T ( n v a r c h a r ( 3 0 ) ,G E T D A T E ( ) ,1 2 6 )A SU s i n g C o n v e r t T o _ I S O 8 6 0 1 ; G O El conjunto de resultados es el siguiente. U n c o n v e r t e d D a t e T i m e U s i n g C a s t U s i n g C o n v e r t T o _ I S O 8 6 0 1

--2 0 0 6 0 4 1 80 9 : 5 8 : 0 4 . 5 7 0A p r1 82 0 0 69 : 5 8 A M 2 0 0 6 0 4 1 8 T 0 9 : 5 8 : 0 4 . 5 7 0

( 1r o w ( s )a f f e c t e d ) El siguiente ejemplo es lo opuesto, aproximadamente, del ejemplo anterior. En el ejemplo se muestra la fecha y la hora como datos de carcter, se utiliza C A S Tpara cambiar los datos de carcter al tipo de datos d a t e t i m ey, a continuacin, se utiliza C O N V E R Tpara cambiar los datos de carcter al tipo de datos d a t e t i m e .

S E L E C T ' 2 0 0 6 0 4 2 5 T 1 5 : 5 0 : 5 9 . 9 9 7 'A SU n c o n v e r t e d T e x t , C A S T ( ' 2 0 0 6 0 4 2 5 T 1 5 : 5 0 : 5 9 . 9 9 7 'A Sd a t e t i m e )A SU s i n g C a s t , C O N V E R T ( d a t e t i m e ,' 2 0 0 6 0 4 2 5 T 1 5 : 5 0 : 5 9 . 9 9 7 ' ,1 2 6 )A SU s i n g C o n v e r t F r o m _ I S O 8 6 0 1; G O El conjunto de resultados es el siguiente. U n c o n v e r t e d T e x t U s i n g C a s t U s i n g C o n v e r t F r o m _ I S O 8 6 0 1

--2 0 0 6 0 4 2 5 T 1 5 : 5 0 : 5 9 . 9 9 72 0 0 6 0 4 2 51 5 : 5 0 : 5 9 . 9 9 72 0 0 6 0 4 2 51 5 : 5 0 : 5 9 . 9 9 7

( 1r o w ( s )a f f e c t e d )

H.Usar CONVERT con datos binarios y de caracteres


Los ejemplos siguientes muestran los resultados de convertir datos binarios y de caracteres utilizando estilos diferentes.

C o n v e r tt h eb i n a r yv a l u e0 x 4 E 6 1 6 d 6 5t oac h a r a c t e rv a l u e . S E L E C TC O N V E R T ( c h a r ( 8 ) ,0 x 4 E 6 1 6 d 6 5 ,0 )A S[ S t y l e0 ,b i n a r yt oc h a r a c t e r ] ; El conjunto de resultados es el siguiente. S t y l e0 ,b i n a r yt oc h a r a c t e r N a m e

( 1r o w ( s )a f f e c t e d )

T h ef o l l o w i n ge x a m p l es h o w sh o wS t y l e1c a nf o r c et h er e s u l t t ob et r u n c a t e d .T h et r u n c a t i o ni sc a u s e db y i n c l u d i n gt h ec h a r a c t e r s0 xi nt h er e s u l t . S E L E C TC O N V E R T ( c h a r ( 8 ) ,0 x 4 E 6 1 6 d 6 5 ,1 )A S[ S t y l e1 ,b i n a r yt oc h a r a c t e r ] ; El conjunto de resultados es el siguiente. S t y l e1 ,b i n a r yt oc h a r a c t e r 0 x 4 E 6 1 6 D

( 1r o w ( s )a f f e c t e d )

T h ef o l l o w i n ge x a m p l es h o w st h a tS t y l e2d o e sn o tt r u n c a t et h e r e s u l tb e c a u s et h ec h a r a c t e r s0 xa r en o ti n c l u d e di n t h er e s u l t . S E L E C TC O N V E R T ( c h a r ( 8 ) ,0 x 4 E 6 1 6 d 6 5 ,2 )A S[ S t y l e2 ,b i n a r yt oc h a r a c t e r ] ; El conjunto de resultados es el siguiente. S t y l e2 ,b i n a r yt oc h a r a c t e r 4 E 6 1 6 D 6 5

( 1r o w ( s )a f f e c t e d )

C o n v e r tt h ec h a r a c t e rv a l u e' N a m e 't oab i n a r yv a l u e . S E L E C TC O N V E R T ( b i n a r y ( 8 ) ,' N a m e ' ,0 )A S[ S t y l e0 ,c h a r a c t e rt ob i n a r y ] ; El conjunto de resultados es el siguiente.

S t y l e0 ,c h a r a c t e rt ob i n a r y 0 x 4 E 6 1 6 D 6 5 0 0 0 0 0 0 0 0 ( 1r o w ( s )a f f e c t e d )

S E L E C TC O N V E R T ( b i n a r y ( 4 ) ,' 0 x 4 E 6 1 6 D 6 5 ' ,1 )A S[ S t y l e1 ,c h a r a c t e rt ob i n a r y ] ; El conjunto de resultados es el siguiente. S t y l e1 ,c h a r a c t e rt ob i n a r y 0 x 4 E 6 1 6 D 6 5 ( 1r o w ( s )a f f e c t e d )

S E L E C TC O N V E R T ( b i n a r y ( 4 ) ,' 4 E 6 1 6 D 6 5 ' ,2 )A S[ S t y l e2 ,c h a r a c t e rt ob i n a r y ] ; El conjunto de resultados es el siguiente. S t y l e2 ,c h a r a c t e rt ob i n a r y 0 x 4 E 6 1 6 D 6 5 ( 1r o w ( s )a f f e c t e d )

Vea tambin
Referencia
SELECT (Transact-SQL) Funciones del sistema (Transact-SQL)

Conceptos

Conversiones de tipos de datos (motor de base de datos) Escribir instrucciones Transact-SQL internacionales

Adiciones de comunidad
2014 Microsoft. Reservados todos los derechos.

Vous aimerez peut-être aussi