En SQL Server, el TRY_CONVERT()
La función es muy similar a CONVERT()
función, excepto que TRY_CONVERT()
no devuelve un error si falla la conversión (CONVERT()
hace).
En su lugar, el TRY_CONVERT()
la función devuelve NULL
si la conversión no tiene éxito.
Sin embargo, hay algunas ocasiones en las que TRY_CONVERT()
devolverá un error.
Sintaxis
La sintaxis es así:
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
Donde expression
es la expresión a convertir, data_type
es el nuevo tipo de datos y length
es una longitud opcional para el nuevo tipo de datos.
El style
opcional El argumento se puede usar para especificar cómo la función debe traducir la expression
argumento. Por ejemplo, podría usar este argumento para especificar el formato de fecha.
Ejemplo 1:la conversión se realiza correctamente
Aquí hay un ejemplo de cómo convertir una cadena a decimal:
SELECT TRY_CONVERT(DECIMAL(5,2), '007');
Resultado:
7.00
En este caso, la conversión se realizó correctamente.
Ejemplo 2:la conversión falla y devuelve NULL
Aquí hay un ejemplo de la conversión que falla y NULL
siendo devuelto:
SELECT TRY_CONVERT(DECIMAL(5,2), 'Three');
Resultado:
NULL
La conversión falló, por lo que NULL
fue devuelto.
A modo de comparación, esto es lo que sucede cuando usamos CONVERT()
en lugar de TRY_CONVERT()
:
SELECT CONVERT(DECIMAL(5,2), 'Three');
Resultado:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Ejemplo 3:la conversión falla y devuelve un error
Hay algunas ocasiones en las que TRY_CONVERT()
devolverá un error.
Si no se permite explícitamente una conversión, devuelve un error:
SELECT TRY_CONVERT(xml, 10);
Resultado:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Ejemplo 4:el style
Argumento
Podemos usar el style
opcional argumento para especificar cómo debe traducirse la expresión.
Ejemplo:
SET LANGUAGE British;
SELECT
TRY_CONVERT(date, '09/02/2030') AS "British",
TRY_CONVERT(date, '09/02/2030', 101) AS "US",
TRY_CONVERT(date, '09/02/30', 1) AS "US (short)",
TRY_CONVERT(date, '20300902', 112) AS "ISO",
TRY_CONVERT(date, '09.02.2030', 104) AS "German";
Resultado:
Changed language setting to British. +------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
Aquí, configuro mi idioma en British
, luego ejecutó TRY_CONVERT()
varias veces, cada una con un style
diferente argumento (excepto el primero, que usa el idioma predeterminado de mi sesión:británico).
Podemos ver que el argumento de estilo afecta cómo se traduce la expresión.
Más información
Ver CONVERT()
en SQL Server para obtener más ejemplos de conversión y CONVERT()
frente a TRY_CONVERT()
en SQL Server para una comparación entre CONVERT()
y TRY_CONVERT()
.
Consulte la documentación de Microsoft para CAST()
y CONVERT()
para obtener información más detallada (la mayor parte también se aplica a TRY_CONVERT()
).