Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách TRY_CONVERT () hoạt động trong SQL Server

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()TRY_CONVERT() .

Xem tài liệu của Microsoft về CAST()CONVERT() để biết thêm thông tin chi tiết (hầu hết nó cũng áp dụng cho TRY_CONVERT() ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016

  2. Thiếu cấu phần phần mềm com.microsoft.sqlserver:sqljdbc4:jar:4.0

  3. Thay thế lần xuất hiện đầu tiên của chuỗi con trong một chuỗi trong SQL

  4. Một số cách truy cập Microsoft SQL Server từ Linux là gì?

  5. Tạo máy chủ được liên kết giữa hai vùng chứa Docker chạy SQL Server (Ví dụ T-SQL)