en este artículo, discutiremos y aprenderemos los conceptos básicos y todos los detalles sobre las operaciones de conversión de tipos de datos de SQL Server y también revisaremos las funciones integradas de SQL CONVERT y TRY_CONVERT con varias muestras. Al principio, explicaremos y aclararemos la sintaxis de la función SQL CONVERT y luego aprenderemos cómo podemos hacer que los tipos de datos numéricos y de fecha/hora del proceso de conversión de datos se conviertan en datos de caracteres.,
implícito vs explícito
El proceso de cambiar el tipo de datos de un valor en otro tipo de datos se conoce como conversión de tipo de datos y también casi todos los lenguajes de programación incluyen algún tipo de funciones o funcionalidad de conversión de datos. Cuando convertimos nuestra perspectiva en SQL Server para discutir los detalles de las operaciones de conversión de datos SQL, al principio podemos separar el proceso de conversión de datos en dos partes; conversiones implícitas y explícitas., La conversión implícita se realiza por SQL Server para necesidades internas y también puede encontrar detalles adicionales en el artículo conversión implícita en SQL Server. La conversión explícita se realiza explícitamente por un programador o administrador de bases de datos y, al mismo tiempo, este proceso de conversión se realiza con la ayuda de cualquier función de conversión de datos. En este artículo, nos centraremos particularmente en la función SQL CONVERT. Esta función proporciona un medio para convertir un tipo de datos a otro tipo de datos especificado. Al principio, interpretaremos la sintaxis de la función SQL CONVERT.,
la Sintaxis de
1
|
CONVERTIR (tipo de dato (longitud), la expresión, el estilo)
|
data_type: Este parámetro define el tipo de datos de destino que se va a convertir. el parámetro data_type puede tomar estos tipos de datos como una entrada que se muestra en la siguiente lista de matrices.
length: este es un parámetro opcional que especifica la longitud del tipo de datos de destino., El valor predeterminado de este parámetro es 30.expresión
: Este parámetro especifica el valor que queremos convertir a otro tipo de datos.
style: este es un parámetro entero que especifica el estilo de salida del valor convertido. Este valor es más útil para los formatos de tipo de datos de fecha.
ahora, reforzaremos estas instrucciones teóricas con varias muestras prácticas.
convertir Float a Int
en este ejemplo, convertiremos un tipo de datos float a integer., En la siguiente consulta, declararemos una variable que el tipo de datos es float y luego usaremos la función SQL CONVERT para convertir el valor float a entero, por lo que realizaremos la operación de conversión de datos.,
1
2
3
4
5
6
|
–Declarar una variable de punto flotante
INDICANDO @FloatVal COMO Float
–Asignar un valor de tipo float a la variable
SET @FloatVal = 1132.,12345
Convert Convert float value to int
SELECT CONVERT(int, @FloatVal) AS ConvertedValue
|
convertir float a VARCHAR
en este ejemplo, convertiremos un valor float a valor VARCHAR. Este ejemplo es muy similar al anterior, pero la única diferencia es que vamos a convertir el valor flotante a varchar.,
1
2
3
4
5
6
|
–Declarar una variable de punto flotante
INDICANDO @FloatVal COMO Float
–Asignar un valor de tipo float a la variable
SET @FloatVal = 1132.,12345
Convert Convert float value to varchar
SELECT CONVERT(varchar, @FloatVal) AS ConvertedValue
|
en el siguiente ejemplo, no enviaremos ningún valor al parámetro length de la función SQL convert, por lo que el parámetro length debe establecerse en el valor predeterminado. Como ya señalamos en la explicación de sintaxis de la función SQL CONVERT, este valor predeterminado es 30 y ahora lo demostraremos., En la siguiente consulta, crearemos una tabla temporal e insertaremos el valor convertido en esta tabla y luego analizaremos la estructura de datos de esta tabla.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABLE IF EXISTS TestConvertedTable
–Declarar una variable de punto flotante
INDICANDO @FloatVal COMO Float
–Asignar un valor de tipo float a la variable
SET @FloatVal = 1132.,12345
Convert Convert float value to varchar
SELECT CONVERT(varchar, @FloatVal) AS ConvertedValue INTO TestConvertedTable
— analiza la tabla temporal
SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
desde INFORMATION_SCHEMA.,Columnas donde TABLE_NAME=’TestConvertedTable’
|
como se puede ver en la imagen de arriba, el tipo de datos float se convirtió al valor varchar y no establecimos el parámetro length así que SQL Server aplicó el valor predeterminado del parámetro length como 30.
ahora, estableceremos el parámetro length de la función SQL CONVERT y luego revisaremos nuevamente la longitud del tipo de datos varchar.,
1
2
3
4
5
6
7
8
9
10
|
DROP TABLE IF EXISTS TestConvertedTable
–Declarar una variable de punto flotante
INDICANDO @FloatVal COMO Float
–Asignar un valor de tipo float a la variable
SET @FloatVal = 1132.,12345
Convert Convert float value to varchar
SELECT CONVERT(varchar(20), @FloatVal) AS ConvertedValue INTO TestConvertedTable
— analiza la tabla temporal
SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH
desde INFORMATION_SCHEMA.Columnas donde TABLE_NAME= ‘TestConvertedTable’
|
convertir dinero a Varchar
el tipo de datos SQL Server money ayuda a almacenar valores monetarios., Podemos definir valores monetarios precedidos por un símbolo de moneda, sin embargo SQL Server no almacena los símbolos de moneda ni ningún dato relacionado con el símbolo de moneda. En la siguiente consulta, convertiremos el tipo de datos money a varchar y también usaremos el parámetro style de la función SQL convert. Con la ayuda del parámetro style, podemos determinar los delimitadores de comas y la longitud del dígito decimal derecho. El siguiente gráfico muestra el valor del parámetro de estilo y la salida de la función SQL CONVERT.,
Value |
Style Parameter |
Comma Delimiter |
Right decimal digit |
Output |
no |
||||
yes |
4,936.,56 |
|||
no |
Convertir Float y Real a Varchar
Float y real, son tipos de datos numéricos aproximados de tipos de datos en SQL Server y significa que estos tipos de datos no almacenar los valores exactos. Almacenan una aproximación muy cercana del valor almacenado. Ahora, explicaremos la concepción aproximada del tipo de datos numéricos., En la siguiente consulta, crearemos una tabla que tiene dos columnas y los tipos de datos de estas columnas son flotantes y reales y luego insertaremos algunos valores numéricos. En realidad, esperábamos números de dos dígitos en la tabla, sin embargo, el tipo de datos real y flotante almacena los valores más cercanos a los valores esperados.
la siguiente tabla se cita de Microsoft Docs y esta tabla explica el estilo de conversión de los tipos de datos flotantes y reales a datos textuales.,
Consejo: la notación científica es un método especial para expresar números muy grandes o pequeños que se usa principalmente en la ciencia.
Valor |
Salida |
0 (por defecto) |
Un máximo de 6 dígitos. Utilizado en notación científica, cuando sea apropiado. |
Siempre de 8 dígitos. Siempre se usa en notación científica. |
|
Siempre de 16 dígitos. Siempre se usa en notación científica. |
|
Siempre 17 dígitos. Utilizar para la conversión sin pérdidas., Con este estilo, se garantiza que cada valor real o flotante distinto se convierta en una cadena de caracteres distinta. |
ahora vamos a demostrar un ejemplo que incluye todos los estilos de conversión de datos de acuerdo con esta tabla.
como puede ver en lo anterior, el conjunto de resultados muestra que el parámetro style cambia la salida de la función SQL CONVERT.
Convertir Fecha / Hora a Varchar
Los formatos de Fecha/Hora pueden variar según la configuración regional y por esta razón requerimos varios formatos para representar la fecha / hora., Imagine que tiene una aplicación y los usuarios de diferentes países usan esta aplicación, por lo que si alguien conecta esta aplicación en EE.UU., debe representar la fecha como formato Mes/Día/Año. Por otro lado, otro usuario conecta esta aplicación en Reino Unido y tiene que representar el formato de fecha como formato de día/mes/año. En este caso tenemos que determinar la fecha / hora que representa el estilo de acuerdo con la configuración de fecha/hora local. el procedimiento almacenado sp_helplanguage devuelve los idiomas soportados con información detallada en SQL Server.,
Además, podemos determinar el idioma para la sesión indicada y de esta manera podemos adaptar las funciones de fecha/hora a un idioma particular. En la siguiente consulta, estableceremos el idioma en polaco y luego podremos ver el cambio del nombre del mes y el día de acuerdo con la configuración regional polaca.
Consejo: Como regla general, si va a diseñar una base de datos de aplicaciones multinacional, siempre almacene la hora UTC (Tiempo Universal coordinado) en una columna para que pueda evitar problemas de fecha/hora debido a la configuración local.,resultado al estándar alemán, podemos utilizar la siguiente consulta:
1
|
select getdate() as ,convert(varchar(50),getdate(),104) as
|
en la siguiente tabla de trucos, puede encontrar cada combinación de uso de parámetro de estilo y formato de salida completo de la función SQL Convert () para conversiones de datos de fecha / hora a Caracteres.,
ow, demostraremos esta tabla de trucos con todas las combinaciones para la función GETDATE de SQL para que podamos averiguar la influencia del parámetro style en las salidas de la función SQL CONVERT.
ahora, mencionaremos algunos puntos que tenemos que considerar sobre la operación de conversión de fecha / hora. Al principio de esta sección, hablamos sobre las opciones y configuraciones de lenguaje de SQL Server, por lo que si cambiamos la configuración de idioma, afecta algunas de las salidas de estilo de conversión de fecha/hora., En el siguiente ejemplo, queremos convertir los resultados de la función GETDATE, por lo que esta configuración afecta directamente el nombre abreviado del mes de la función SQL CONVERT.
Otra consideración es sobre el formato de año. En algunas circunstancias, podemos usar el parámetro style que no devuelve el formato century, pero este caso puede causar algunas situaciones confusas. Como en el siguiente ejemplo, tenemos dos fechas diferentes y también estas fechas almacenan años diferentes, sin embargo, la salida de la función SQL CONVERT es similar.,
TRY_CONVERT ()
la función SQL TRY_CONVERT es una forma avanzada de la función SQL CONVERT. La principal ventaja de la función SQL TRY_CONVERT es la protección contra errores de conversión de datos durante la ejecución de la consulta. Es posible que podamos experimentar errores en el proceso de conversión de datos con la operación encubierta SQL debido a datos no adecuados o sucios. Sin embargo, la función SQL TRY_CONVERT nos permite evitar este tipo de errores. Al mismo tiempo, no hay diferencias de sintaxis entre las funciones SQL CONVERT y TRY_CONVERT., La función SQL TRY_CONVERT devuelve un valor NULL si la conversión de datos genera un error. En el siguiente ejemplo, al principio intentaremos convertir el valor del carácter a un entero a través de la función SQL CONVERT y esta operación devolverá un error.,
1
|
SELECT CONVERT(INT,’AnyString’) COMO ConvertFunc
|
Por otro lado, si usamos el SQL TRY_CONVERT función en lugar de la función CONVERT SQL para la misma consulta devolverá el valor NULL.,
1
|
SELECT TRY_CONVERT(INT,’AnyString’) AS ConvertFunc
|
Conclusion
In this article, we thoroughly reviewed the SQL CONVERT function syntax, details and significant considerations. Data conversion processes have wide usage, in practice, therefore in this article we demonstrated various examples., Le recomiendo que tenga cuidado con la conversión de tipo de datos de fecha/hora si su base de datos se está utilizando en diferentes países. Del mismo modo formatear los tipos de datos de fecha/hora es otro punto importante.
- Autor
- mensajes Recientes
Ver todos los mensajes por Esat Erkec
- introducción a SQL Programación – febrero 3, 2021
- Cómo leer un plan de ejecución con todos los detalles – el 28 de enero de 2021
- SQL SELECT TOP declaración de introducción y ejemplos – 25 de enero de 2021
Deja una respuesta