是否可以在SQL选择中使用TRY CATCH块?
对于类似的东西,例如:
select
order,
CONVERT(DATETIME, orderDate)
from orders
处理这种情况的最佳方法是什么?
答案 0 :(得分:22)
我不知道try-catch,但是在SQL Server中你有ISDATE函数,可以用来做类似的事情
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DateTime, orderDate) ELSE GETDATE() END
答案 1 :(得分:12)
在MS SQL Server 2012中,有一个新的构造可以完全满足要求:
SELECT
CASE WHEN TRY_CONVERT(float, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
答案 2 :(得分:2)
在SELECT子句本身中,没有。
您可以使用ISDATE()
测试日期select
order,
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DATETIME, orderDate) ELSE NULL END
from orders
答案 3 :(得分:1)
您可以使用ISDATE()函数:
SELECT ISDATE('11/13/2009')
SELECT ISDATE('13/11/2009')
答案 4 :(得分:1)
我不认为在select中可以尝试catch,但是在使用存储过程时可以使用外部。
begin try
select cast(strartnr as int) from table
end try
begin catch
select 10000 from table
end catch