T-SQL Funciones de Conversión CAST, CONVERT y PARSE

1. T-SQL. Funciones de Conversión CAST, CONVERT y PARSE

Se pretende ver las distintas posibilidades de conversión y su casos de uso.

CAST: 

La estructura es CAST ( expression AS data_type [ (length ) ])

Sino se establece length por defecto es 30.

  • Se puede usar para cálculos aritméticos

El resultado es:

*Nota: se puede observar que al hacer el CAST sin el ROUND lo que hace es truncar el valor. En la tabla siguiente podéis ver los comportamientos.

Comportamiento del ROUND según el tipo

Sería útil para obtener el porcentaje de descuentos aplicados ….

Resultado

  • Se puede usar para concatenar.

Resultados:

 

  • Se puede usar para obtener solo una parte del texto.
    Nos interesa obtener solo los 35 primeros caracteres de error.

Resultado:

  • Se puede usar con la cláusula LIKE
    Obtener las facturas que se han hecho a las 10 de la mañana

Resultado:

  • Se puede usar para generar instancias de XML

Resultado:

Resultado de la consulta, muestra el XML

  • Se puede usar con las fechas

Resultado:

Resultado de las consultas con CAST

 

CONVERT:

La estructura es CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Es muy interesante su uso en tipo de datos fecha y numéricos ya que permite establecer el estilo.

Ejemplo Convert de datetime en dato de caracteres

Resultado:

Resultado consulta usando CONVERT

Convertir caracteres a datetime, y comparar con la fecha

Es lo contrario que lo anterior , lo que hay que fijarse es la fecha en texto a que formato corresponde, ya que sino se puede confundir el año con el mes , aquí tienes dos ejemplos:

Resultado: se obtiene el mismo número de filas, ambas son correctas

El problema es si hiciéramos esta consulta

La fecha la convierte a 2013-01-12  y 2013-03-12  respectivamente, obteniendo un resultado no esperado, hay que tener en cuenta el texto indicado y el formato al que convertir para no llevarnos sorpresas.

PARSE:  (a partir de Sql Server 2012)

La estructura es PARSE ( string_value AS data_type [ USING culture ] )

Se usa principalmente para convertir strings a  Fecha o numero.

Por ejemplo vamos a ver las conversiones usando “culture”

El resultado sería el siguiente observa que es diferente según la culture

Resultado consulta usando PARSE en fechas

Ahora con números se puede apreciar lo mismo.

Resultado consulta usando PARSE en MONEY

Parse Tipos y Cultura

A partir del SQL server 2012 y Azure SQL Database tenemos

 

En caso de que de error, devuelven un NULL en vez de la excepción, os pongo un ejemplo con PARSE.

Espero que os sea de utilidad.

Deja un comentario