Cảm ơn bạn đã đưa ra một số ví dụ rõ ràng hơn. Theo như tôi có thể nói từ tài liệu và Googling, điều này không thể xảy ra trong MSSQL 2005 nếu không có UDF hoặc mã thủ tục khác. Trong MSSQL 2008, style của hàm CONVERT () tham số hiện thống nhất dữ liệu nhị phân, vì vậy bạn có thể thực hiện trực tiếp như sau:
select convert(int, convert(varbinary, '0x89', 1))
Trong các phiên bản trước, lựa chọn của bạn là:
- Sử dụng UDF (TSQL hoặc CLR; CLR thực sự có thể dễ dàng hơn cho việc này)
- Bao bọc SELECT trong một thủ tục được lưu trữ (nhưng dù sao thì bạn vẫn có thể có UDF tương đương trong đó)
- Chuyển đổi nó trong giao diện người dùng của ứng dụng
- Nâng cấp lên MSSQL 2008
Nếu việc chuyển đổi dữ liệu chỉ dành cho mục đích hiển thị, thì ứng dụng có thể là giải pháp dễ dàng nhất:dù sao thì việc định dạng dữ liệu cũng thường thuộc về nó. Nếu bạn phải làm điều đó trong một truy vấn, thì UDF là dễ dàng nhất nhưng hiệu suất có thể không tốt (tôi biết bạn đã nói rằng bạn không thích sử dụng UDF nhưng không rõ tại sao). Tôi đoán rằng việc nâng cấp lên MSSQL 2008 chỉ vì điều này có lẽ không thực tế.
Cuối cùng, FYI số phiên bản bạn đưa vào là phiên bản của Management Studio, không phải số phiên bản của máy chủ của bạn. Để có được điều đó, hãy truy vấn chính máy chủ bằng select @@version
hoặc select serverproperty('ProductVersion')
.