SQL Selects で TRY CATCH ブロックを使用することは可能ですか?
たとえば、これに似たものについては:
select
order,
CONVERT(DATETIME, orderDate)
from orders
このシナリオを処理する最善の方法は何ですか?
try-catchについてはわかりませんが、SQL ServerにはISDATE関数があり、次のようなことができます。
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DateTime, orderDate) ELSE GETDATE() END
MS SQL Server 2012には、求められていることを正確に実行する新しい構成があります。
SELECT
CASE WHEN TRY_CONVERT(float, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
http://msdn.microsoft.com/en-us/library/hh230993.aspxも参照してください。
SELECT句自体では、いいえ。
ISDATE()を使用して日付をテストできます
select
order,
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DATETIME, orderDate) ELSE NULL END
from orders
関数ISDATE()を使用できます。
SELECT ISDATE('11/13/2009')
SELECT ISDATE('13/11/2009')
select の内部では try catch は可能ではないと思いますが、ストアド プロシージャを使用している場合は外部で可能です。
begin try
select cast(strartnr as int) from table
end try
begin catch
select 10000 from table
end catch