Bagikan melalui


TRY_CAST (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Mengembalikan nilai yang ditransmisikan ke jenis data yang ditentukan jika pemeran berhasil; jika tidak, mengembalikan null.

Konvensi sintaks transact-SQL

Sintaks

TRY_CAST ( expression AS data_type [ ( length ) ] )

Argumen

expression

Menentukan ekspresi valid apa pun yang akan dilemparkan.

data_type

Jenis data yang akan ditransmisikan ekspresinya. Nilai ini menentukan rentang nilai yang dapat diterima.

length

Bilangan bulat opsional yang menentukan panjang jenis data target.

Jenis yang dikembalikan

Mengembalikan nilai yang ditransmisikan ke jenis data yang ditentukan jika pemeran berhasil; jika tidak, mengembalikan null.

Keterangan

TRY_CASTmengambil nilai yang diteruskan ke nilai tersebut dan mencoba mengonversinya ke data_type yang ditentukan. Jika pemeran berhasil, TRY_CAST mengembalikan nilai sebagai data_type yang ditentukan; jika terjadi kesalahan, null dikembalikan. Namun jika Anda meminta konversi yang secara eksplisit tidak diizinkan, maka TRY_CAST gagal dengan kesalahan.

TRY_CAST bukan kata kunci cadangan baru dan tersedia di semua tingkat kompatibilitas. TRY_CAST memiliki semantik yang sama seperti TRY_CONVERT saat menyambungkan ke server jarak jauh.

TRY_CAST tidak berfungsi untuk ekspresi dalam kasus berikut:

  • varchar(max) jika panjangnya lebih dari 8.000
  • nvarchar(max) jika panjangnya lebih dari 4.000

Contoh

J. TRY_CAST mengembalikan null

Contoh berikut menunjukkan bahwa TRY_CAST mengembalikan null saat pemeran gagal.

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

Berikut set hasilnya.

Result
------------
Cast failed

Contoh berikut menunjukkan bahwa ekspresi harus dalam format yang diharapkan.

SET DATEFORMAT dmy;

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

Berikut set hasilnya.

Result
----------------------
NULL

B. TRY_CAST gagal dengan kesalahan

Contoh berikut menunjukkan bahwa TRY_CAST mengembalikan kesalahan ketika cast secara eksplisit tidak diizinkan.

SELECT TRY_CAST(4 AS XML) AS Result;
GO

Hasil dari pernyataan ini adalah kesalahan, karena bilangan bulat tidak dapat ditransmisikan ke dalam jenis data xml .

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

C. TRY_CAST berhasil

Contoh ini menunjukkan bahwa ekspresi harus dalam format yang diharapkan.

SET DATEFORMAT mdy;

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

Berikut set hasilnya.

Result
----------------------------------
2022-12-31 00:00:00.0000000