Trong SQL Server, TRY_CONVERT()
rất giống với hàm CONVERT()
, ngoại trừ TRY_CONVERT()
không trả lại lỗi nếu chuyển đổi không thành công (CONVERT()
làm).
Thay vào đó, TRY_CONVERT()
hàm trả về NULL
nếu chuyển đổi không thành công.
Tuy nhiên, có một số trường hợp TRY_CONVERT()
sẽ trả về một lỗi.
Cú pháp
Cú pháp như sau:
TRY_CONVERT ( data_type [ ( length ) ], expression [, style ] )
Ở đâ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.
style
tùy chọn đối số có thể được sử dụng để chỉ định cách hàm sẽ dịch biểu thức expression
lý lẽ. Ví dụ:bạn có thể sử dụng đối số này để chỉ định định dạng ngày.
Ví dụ 1 - Chuyển đổi Thành công
Dưới đây là một ví dụ về chuyển đổi một chuỗi thành số thập phân:
SELECT TRY_CONVERT(DECIMAL(5,2), '007');
Kết quả:
7.00
Trong trường hợp này, chuyển đổi đã thành công.
Ví dụ 2 - Chuyển đổi Không thành công và Trả về NULL
Dưới đây là một ví dụ về việc chuyển đổi không thành công và NULL
được trả lại:
SELECT TRY_CONVERT(DECIMAL(5,2), 'Three');
Kết quả:
NULL
Chuyển đổi 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 CONVERT()
thay vì TRY_CONVERT()
:
SELECT CONVERT(DECIMAL(5,2), 'Three');
Kết quả:
Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.
Ví dụ 3 - Chuyển đổi Không thành công và Trả về Lỗi
Có một số trường hợp TRY_CONVERT()
sẽ trả về một lỗi.
Nếu một chuyển đổi rõ ràng không được phép, thì nó sẽ trả về lỗi:
SELECT TRY_CONVERT(xml, 10);
Kết quả:
Msg 529, Level 16, State 2, Line 1 Explicit conversion from data type int to xml is not allowed.
Ví dụ 4 - Kiểu expression
Đối số
Chúng ta có thể sử dụng style
tùy chọn đối số để chỉ định cách dịch biểu thức.
Ví dụ:
SET LANGUAGE British;
SELECT
TRY_CONVERT(date, '09/02/2030') AS "British",
TRY_CONVERT(date, '09/02/2030', 101) AS "US",
TRY_CONVERT(date, '09/02/30', 1) AS "US (short)",
TRY_CONVERT(date, '20300902', 112) AS "ISO",
TRY_CONVERT(date, '09.02.2030', 104) AS "German";
Kết quả:
Changed language setting to British. +------------+------------+--------------+------------+------------+ | British | US | US (short) | ISO | German | |------------+------------+--------------+------------+------------| | 2030-02-09 | 2030-09-02 | 2030-09-02 | 2030-09-02 | 2030-02-09 | +------------+------------+--------------+------------+------------+
Tại đây, tôi đặt ngôn ngữ của mình thành British
, sau đó chạy TRY_CONVERT()
nhiều lần, mỗi lần sử dụng một style
khác nhau đối số (ngoại trừ đối số đầu tiên, sử dụng ngôn ngữ mặc định trong phiên của tôi - tiếng Anh).
Chúng ta có thể thấy rằng đối số kiểu ảnh hưởng đến cách biểu thức được dịch.
Thông tin thêm
Xem CONVERT()
trong SQL Server để biết thêm các ví dụ chuyển đổi và CONVERT()
so với TRY_CONVERT()
trong SQL Server để so sánh giữa CONVERT()
và TRY_CONVERT()
.
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_CONVERT()
).