2009-04-01 32 views
275

Hướng dẫn chung về thời điểm bạn nên sử dụng CAST so với CONVERT là gì? Có bất kỳ vấn đề về hiệu suất nào liên quan đến việc chọn cái nào so với cái kia không? Là một trong những gần gũi hơn với ANSI-SQL?T-SQL Cast so với Chuyển đổi

Trả lời

303

CONVERT là SQL Server cụ thể, CAST là ANSI.

CONVERT linh hoạt hơn ở chỗ bạn có thể định dạng ngày, vv Ngoài ra, chúng khá giống nhau. Nếu bạn không quan tâm đến các tính năng mở rộng, hãy sử dụng CAST.

EDIT:

Theo ghi nhận của @beruic và @ C-F trong các ý kiến ​​dưới đây, có thể mất độ chính xác khi một chuyển đổi ngầm được sử dụng (có nghĩa là một trong những nơi bạn sử dụng không CAST cũng không CONVERT). Để biết thêm thông tin, hãy xem CAST and CONVERT và đặc biệt là đồ họa này: SQL Server Data Type Conversion Chart. Với thông tin bổ sung này, lời khuyên ban đầu vẫn giữ nguyên. Sử dụng CAST nếu có thể.

+5

Ngoài ra, tôi tin rằng có một số chuyển đổi số nơi CAST nên được sử dụng để duy trì độ chính xác, nhưng tôi đang gặp khó khăn khi tìm một đáng tin cậy nguồn thông tin này. – beruic

+2

@beruic Bạn nói đúng, có thông tin trong MSDN: http://msdn.microsoft.com/en-us/library/ms187928.aspx CAST được yêu cầu duy trì độ chính xác khi chuyển đổi giữa các loại DECIMAL và NUMERIC. –

+0

@ C-F Bạn thấy thông tin này ở đâu? Tôi đã theo liên kết, mở trang chung trên CAST và CONVERT và thông tin duy nhất về độ chính xác mà tôi có thể tìm thấy là về việc chuyển đổi các giá trị float sử dụng ký pháp khoa học. Tôi có thể sai trong bình luận đầu tiên của tôi? – beruic

7

CAST là standar SQL, nhưng CONVERT không phải là (chỉ dành cho các phương ngữ T-SQL), chúng tôi có một lợi thế nhỏ cho chuyển đổi trong trường hợp datetime

với CAST, bạn cho biết sự biểu hiện và các loại mục tiêu ; với CONVERT, có đối số thứ ba thể hiện kiểu dáng cho chuyển đổi, được hỗ trợ cho một số chuyển đổi, như giữa các ký tự giá trị ngày và giờ. Ví dụ: CONVERT (DATE, '1/2/2012', 101) chuyển đổi chuỗi ký tự chữ cái thành DATE bằng cách sử dụng kiểu 101 đại diện cho tiêu chuẩn Hoa Kỳ.

liên quan,

3

CAST sử dụng tiêu chuẩn ANSI. Trong trường hợp tính di động, điều này sẽ hoạt động trên các nền tảng khác. CONVERT dành riêng cho máy chủ sql. Nhưng chức năng rất mạnh. Bạn có thể chỉ định các kiểu khác nhau cho các ngày

0

Có điều gì đó dường như chưa được chú ý là dễ đọc. Có ...

CONVERT(SomeType, 
    SomeReallyLongExpression 
    + ThatMayEvenSpan 
    + MultipleLines 
    ) 

... có thể dễ hiểu hơn ...

CAST(SomeReallyLongExpression 
    + ThatMayEvenSpan 
    + MultipleLines 
    AS SomeType 
    ) 
Các vấn đề liên quan