Aracılığıyla paylaş


TRY_CONVERT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Eğer döküm başarılı olursa, belirtilen veri türüne bir değer döküm döner; aksi takdirde, döner NULL.

Transact-SQL söz dizimi kuralları

Sözdizimi

TRY_CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Arguments

data_type

İfadenin atandığı veri türü.

length

Kullanıcının belirtilen uzunluğuna izin veren veri türleri için hedef veri türünün uzunluğunu belirten isteğe bağlı bir tamsayı. Uzunluk için maksimum değer 8.000 bayttır.

expression

Atma değeri.

üslup

Fonksiyonun TRY_CONVERTifadeyi nasıl çevireceğini belirten isteğe bağlı tam sayı ifadesi.

Style, fonksiyonun CONVERT parametresiyle aynı değerleri kabul eder. Daha fazla bilgi için bkz. CAST ve CONVERT.

data_type değeri, kabul edilebilir değerler aralığını belirler. Eğer stil iseNULL, döner TRY_CONVERTNULL.

Dönüş türleri

Eğer döküm başarılı olursa, belirtilen veri türüne bir değer döküm döner; aksi takdirde, döner NULL.

Açıklamalar

TRY_CONVERT geçirilen değeri alır ve belirtilen data_type dönüştürmeye çalışır. Eğer atış başarılı olursa, TRY_CONVERT belirtilen değer data_type döner; hata NULL olursa döner. Ancak açıkça izin verilmeyen bir dönüştürme isteğinde bulunursanız hatayla TRY_CONVERT başarısız olur.

TRY_CONVERT uyumluluk seviyesinden 110başlayarak ayrılmış bir anahtar kelimedir.

Bu fonksiyon, SQL Server 2012 (11.x) ve daha sonraki sürümlere sahip sunuculara uzaktan bağlanabilir. SQL Server 2012 (11.x) sürümünden daha eski sürüme sahip sunuculara uzaktan bağlanmaz.

Örnekler

A. TRY_CONVERT NULL döndürür

  • Aşağıdaki örnek, atış başarısız olduğunda geri TRY_CONVERT döndüğünü NULL gösterir.

    SELECT
        CASE WHEN TRY_CONVERT(FLOAT, 'test') IS NULL
        THEN 'Cast failed'
        ELSE 'Cast succeeded'
    END AS Result;
    GO
    

    Bu sorgu sonucunu döndürür.Cast failed

  • Aşağıdaki örnek, ifadenin beklenen biçimde olması gerektiğini gösterir.

    SET DATEFORMAT dmy;
    SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
    GO
    

    Bu sorgu sonucunu döndürür.NULL

B. TRY_CONVERT hatayla başarısız olur

Aşağıdaki örnek, atamaya açıkça izin verilmediğinde hata döndürdüğünü TRY_CONVERT gösterir.

SELECT TRY_CONVERT(XML, 4) AS Result;
GO

Bu ifadenin sonucu bir hatadır, çünkü bir tamsayı xml veri tipine dökülemez.

Explicit conversion from data type int to xml is not allowed.

C. TRY_CONVERT başarılı olur

Bu örnek, ifadenin beklenen biçimde olması gerektiğini gösterir.

SET DATEFORMAT mdy;
SELECT TRY_CONVERT(DATETIME2, '12/31/2022') AS Result;
GO

Bu sorgu sonucunu döndürür.2022-12-31 00:00:00.0000000