是否可以在SQL Selects中使用TRY CATCH塊?在Select語句中對CONVERT嘗試捕獲
類似,對於此,例如東西:
select
order,
CONVERT(DATETIME, orderDate)
from orders
什麼是處理這種情況的最好方法是什麼?
是否可以在SQL Selects中使用TRY CATCH塊?在Select語句中對CONVERT嘗試捕獲
類似,對於此,例如東西:
select
order,
CONVERT(DATETIME, orderDate)
from orders
什麼是處理這種情況的最好方法是什麼?
我不知道的try-catch,但在SQL Server你有ISDATE功能,並且可以在那裏做這樣的事情
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DateTime, orderDate) ELSE GETDATE() END
您可以使用函數ISDATE():
SELECT ISDATE('11/13/2009')
SELECT ISDATE('13/11/2009')
在SELECT子句本身中,沒有。
您可以使用,雖然ISDATE()
select
order,
CASE WHEN ISDATE(orderDate) = 1 THEN CONVERT(DATETIME, orderDate) ELSE NULL END
from orders
我不認爲一個嘗試捕捉可能裏面選擇,但外面是可能的,當你使用存儲過程的工作測試的日期。
begin try
select cast(strartnr as int) from table
end try
begin catch
select 10000 from table
end catch
在MS SQL Server 2012中有一個新的結構,它究竟是幹什麼的要求:
SELECT
CASE WHEN TRY_CONVERT(float, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
如果則IsDate是真實的,那麼你可以將它轉換爲約會時間。這就是IsDate的要點。 – cjk 2009-05-28 13:56:24
@JohhnIdol:「標準」是什麼意思。 ISO是一個例子的標準。 orderDate有什麼不同的格式? – Sung 2009-05-28 14:05:09
對不起 - 我感到困惑 - IsDate很好!如果orderDate是VarChar, – JohnIdol 2009-05-28 14:56:08