try_convert (Transact-sql)
Döküm başarırsa belirtilen veri türe değerini döndürür; Aksi takdirde null döndürür.
Transact-SQL Sözdizim Kuralları
Sözdizimi
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
Bağımsız değişkenler
data_type [ ( length ) ]
Veri türü, içine dökme expression.expression
Döküm değeri.style
Belirten isteğe bağlı bir tamsayı ifade nasıl TRY_CONVERTişlevidir çevirmek için expression.styleaynı değerleri olarak kabul styleparametresi CONVERTişlevi. Daha fazla bilgi için, bkz. CAST ve CONVERT (Transact-SQL).
Kabul edilebilir değerler aralığı değeri tarafından belirlenir data_type. Eğer stylesonra Is null, TRY_CONVERTnull döndürür.
Dönüş Türleri
Döküm başarırsa belirtilen veri türe değerini döndürür; Aksi takdirde null döndürür.
Açıklamalar
TRY_CONVERTkendisine iletilen değerini alır ve belirtilen dönüştürmeye çalışır data_type. Döküm işlemi başarılı olursa, TRY_CONVERTbelirtilen değeri döndürür data_type; bir hata oluşursa null döndürdü. Ancak bunu, sonra verilmez açıkça bir dönüşüm talep TRY_CONVERTbir hata ile başarısız.
TRY_CONVERTUyumluluk düzeyi 110 yeni bir anahtar sözcüktür.
Bu işlev bir versiyonu olan sunucularına uzak olma yeteneğine sahip SQL Server 2012ve yukarısı. Bir versiyonu olan sunucularına uzak olmayacak SQL Server 2012.
Örnekler
A.try_convert null döndürür
Aşağıdaki örnekte gösterilmiştir: cast başarısız olduğunda, try_convert null döndürür.
SELECT
CASE WHEN TRY_CONVERT(float, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
SELECT
CASE WHEN TRY_CONVERT(float, 'test') IS NULL
THEN 'Cast failed'
ELSE 'Cast succeeded'
END AS Result;
GO
Sonuç kümesi buradadır.
Result
------------
Cast failed
(1 row(s) affected)
Result
------------
Cast failed
(1 row(s) affected)
Aşağıdaki örnek, ifade beklenen biçimde olması gerektiğini gösterir.
SET DATEFORMAT dmy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
SET DATEFORMAT dmy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
Sonuç kümesi buradadır.
Result
----------------------
NULL
(1 row(s) affected)
Result
----------------------
NULL
(1 row(s) affected)
B.try_convert bir hata ile başarısız olur.
Aşağıdaki örnekte gösterilmiştir: ne zaman dökme açıkça verilmez, try_convert bir hata döndürür.
SELECT TRY_CONVERT(xml, 4) AS Result;
GO
SELECT TRY_CONVERT(xml, 4) AS Result;
GO
Bu ifadenin sonucu bir hata nedeni, bir tamsayı, bir xml veri türüne atanamaz.
Explicit conversion from data type int to xml is not allowed.
Explicit conversion from data type int to xml is not allowed.
C.try_convert başarılı
Bu örnek, ifade beklenen biçimde olması gerektiğini gösterir.
SET DATEFORMAT mdy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
SET DATEFORMAT mdy;
SELECT TRY_CONVERT(datetime2, '12/31/2010') AS Result;
GO
Sonuç kümesi buradadır.
Result
----------------------------------
2010-12-31 00:00:00.0000000
(1 row(s) affected)
Result
----------------------------------
2010-12-31 00:00:00.0000000
(1 row(s) affected)