Tema SQL
TRY_CAST / TRY_CONVERT (SQL Server)
Conversión defensiva: TRY_CAST / TRY_CONVERT devuelven NULL si el formato no encaja (sin error duro). En MySQL no hay equivalente TRY_ nativo.
Descripción
TRY_CAST ( expresión AS tipo ) y TRY_CONVERT ( tipo , expresión [, estilo ] ) son imprescindibles al limpiar datos heterogéneos en ETL o al castear texto de origen no fiable: prefieres filas con NULL a un batch que revienta. CAST y CONVERT «normales» lanzan error ante formato inválido. TRY_CONVERT permite el parámetro estilo para fechas (p. ej. formatos 112, 120). En ETL masivo combina con WHERE TRY_CAST(x AS INT) IS NOT NULL para separar válidos. En MySQL no hay TRY_* nativo con la misma semántica: se usan expresiones regulares, procedimientos o validación en aplicación; CAST devuelve error o advertencias según sql_mode.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
TRY_CAST(expresión AS tipo_destino)
TRY_CONVERT(tipo_destino, expresión [, estilo_fecha])
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- NULL ante fallo
- No sustituye validación de negocio: distingue NULL por fallo vs NULL en origen.
- CONVERT estilo
- Útil para literales de fecha con formatos fijos en T-SQL.
- MySQL
- Validar antes de CAST o usar rutinas defensivas; sin TRY_ estándar.
Ejemplos
Ejemplo 1
SELECT TRY_CAST('123' AS INT) AS ok,
TRY_CAST('abc' AS INT) AS fallo;
-- fallo es NULL
SELECT TRY_CONVERT(date, '20260412', 112) AS d_iso;
SELECT col_texto
FROM staging
WHERE TRY_CAST(col_texto AS DECIMAL(18, 2)) IS NOT NULL;
Ejemplo 2
SELECT AVG(TRY_CAST(valor_texto AS FLOAT)) AS media_ok
FROM mediciones
WHERE TRY_CAST(valor_texto AS FLOAT) IS NOT NULL;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.