Trong SQL Server, một hàm thường được sử dụng là CAST()
, chuyển đổi một biểu thức của kiểu dữ liệu này sang kiểu dữ liệu khác. Nhưng nếu quá trình truyền không thành công, thì nó sẽ trả về một lỗi.
Nhập TRY_CAST()
.
TRY_CAST()
hàm không trả về lỗi nếu quá trình truyền không thành công. Thay vào đó, nó trả về NULL
.
Tuy nhiên, có một số trường hợp, nó sẽ trả về lỗi.
Cú pháp
Cú pháp như sau:
TRY_CAST ( expression AS data_type [ ( length ) ] )
Ở đâu expression
là biểu thức để chuyển đổi, data_type
là kiểu dữ liệu mới và length
là độ dài tùy chọn cho kiểu dữ liệu mới.
Ví dụ 1 - Truyền thành công
Dưới đây là một ví dụ về truyền một chuỗi dưới dạng decimal
:
SELECT TRY_CAST('007' AS DECIMAL(5,2));
Kết quả:
7.00
Trong trường hợp này, việc truyền thành công.
Ví dụ 2 - Truyền không đạt và trả về NULL
Dưới đây là một ví dụ về quá trình truyền không thành công và NULL
được trả lại:
SELECT TRY_CAST('Double Oh Seven!' AS DECIMAL(5,2));
Kết quả:
NULL
Truyền không thành công và vì vậy NULL
đã được trả lại.
Để so sánh, đây là điều xảy ra khi chúng tôi sử dụng CAST()
thay vì TRY_CAST()
:
SELECT CAST('Double Oh Seven!' AS DECIMAL(5,2));
Kết quả:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Ví dụ 3 - Truyền lỗi và trả về lỗi
Có một số trường hợp TRY_CAST()
sẽ trả về một lỗi.
Nếu một phép ép kiểu không được phép rõ ràng, thì nó sẽ trả về một lỗi:
SELECT TRY_CAST(10 AS xml);
Kết quả:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Thông tin thêm
Xem Cách thực hiện CAST()
Hoạt động trong SQL Server để biết thêm các ví dụ chuyển đổi và CAST()
so với TRY_CAST()
trong SQL Server để so sánh giữa CAST()
và TRY_CAST()
.
Xem tài liệu của Microsoft về CAST()
và CONVERT()
để biết thêm thông tin chi tiết (hầu hết nó cũng áp dụng cho TRY_CAST()
).