Tidak ada TRY_CONVERT() atau TRY_CAST() di SQL-Server 2008, tetapi Anda dapat menggunakan gips internal XML ke tipe nullable.
Coba ini
DECLARE @tbl TABLE(SomeInt VARCHAR(100));
INSERT INTO @tbl VALUES('123')
,('blah') --bad data
SELECT t.*
,CAST('' AS XML).value('sql:column("t.SomeInt") cast as xs:int?','int')
FROM @tbl t;
Sedikit hack... Tapi entah kenapa cantik;-)
Beberapa penjelasan
CAST('' AS XML) hanyalah trik untuk mendapatkan XML asli untuk mendapatkan penggunaan metode asli XML. sql:column() adalah XQuery -fungsi, yang memungkinkan Anda untuk memasukkan kolom set ke dalam XQuery (gunakan sql:variable untuk variabel).
cast as xs:int? akan mencoba mengurai string sebagai nilai int dan akan mengembalikan NULL jika ini tidak berhasil.
Batasannya adalah:Ini akan selalu menggunakan default sistem Anda (mirip dengan TRY_CAST ). Dengan TRY_CONVERT Anda akan memiliki kontrol lebih besar atas output dengan parameter ketiga...
Petunjuk:XQuery/Xpath sangat peka huruf besar-kecil. Jadi ada xs:dateTime? , tetapi Anda akan mendapatkan kesalahan dengan xs:datetime ...