Aracılığıyla paylaş


TRY_CAST (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ı

Atama başarılı olursa belirtilen veri türüne bir değer ataması döndürür; aksi takdirde null döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

TRY_CAST ( expression AS data_type [ ( length ) ] )

Arguments

expression

Yayınlanacak geçerli ifadeleri belirtir.

data_type

İfadenin atandığı veri türü. Bu değer, kabul edilebilir değer aralığını belirler.

length

Hedef veri türünün uzunluğunu belirten isteğe bağlı tamsayı.

Dönüş türleri

Atama başarılı olursa belirtilen veri türüne bir değer ataması döndürür; aksi takdirde null döndürür.

Açıklamalar

TRY_CAST geçirilen değeri alır ve belirtilen data_type dönüştürmeye çalışır. Atama başarılı olursa değeri TRY_CAST belirtilen data_type döndürür; hata oluşursa null döndürülür. Ancak açıkça izin verilmeyen bir dönüştürme isteğinde bulunursanız hatayla TRY_CAST başarısız olur.

TRY_CAST yeni bir ayrılmış anahtar sözcük değildir ve tüm uyumluluk düzeylerinde kullanılabilir. TRY_CAST uzak sunuculara bağlanırken kullanılan semantiğin TRY_CONVERT aynısına sahiptir.

TRY_CAST aşağıdaki durumlarda bir ifade için çalışmaz:

  • uzunluk 8.000'in üzerindeyse varchar(max)
  • Uzunluk 4.000'in üzerindeyse nvarchar(max)

Örnekler

A. TRY_CAST NULL döndürür

  • Aşağıdaki örnekte, atama başarısız olduğunda null değerinin döndürüldüğü TRY_CAST gösterilmiştir.

    SELECT
    CASE WHEN TRY_CAST('test' AS FLOAT) 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_CAST('12/31/2022' AS DATETIME2) AS Result;
    GO
    

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

B. TRY_CAST hatayla başarısız oluyor

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

SELECT TRY_CAST(4 AS XML) 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_CAST başarılı

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

SET DATEFORMAT mdy;

SELECT TRY_CAST('12/31/2022' AS DATETIME2) AS Result;
GO

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