español - stuff sql server for xml path
INTENTE ENCONTRAR en un CONVERTIR en una declaración selecta (5)
En MS SQL Server 2012 hay una nueva construcción que hace exactamente lo que se solicita:
SELECT
CASE WHEN TRY_CONVERT(float, ''test'') IS NULL
THEN ''Cast failed''
ELSE ''Cast succeeded''
END AS Result;
GO
Consulte también http://msdn.microsoft.com/en-us/library/hh230993.aspx
¿Es posible usar los bloques TRY CATCH en las Selecciones de SQL?
Para cosas similares a esto por ejemplo:
select
order,
CONVERT(DATETIME, orderDate)
from orders
¿Cuál es la mejor manera de manejar este escenario?
En la propia cláusula SELECT, no.
Puedes probar una fecha usando ISDATE ()
select
order,
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DATETIME, orderDate) ELSE NULL END
from orders
No creo que una captura de prueba sea posible dentro de una selección, pero afuera es posible cuando se trabaja con procedimientos almacenados.
begin try
select cast(strartnr as int) from table
end try
begin catch
select 10000 from table
end catch
No sé acerca de try-catch, pero en SQL Server tiene la función ISDATE y puede hacer algo como
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DateTime, orderDate) ELSE GETDATE() END
Puedes usar la función ISDATE ():
SELECT ISDATE(''11/13/2009'')
SELECT ISDATE(''13/11/2009'')