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

Làm cách nào để chỉ chọn một phần của tệp nhị phân khổng lồ (tệp)?

OK, tôi đã tìm ra nó. Cách thực hiện điều này là với hàm chuỗi con, mà MS nói chính xác là hoạt động với các mã nhị phân. Những gì họ không nói là chuỗi con sẽ chỉ trả về 8.000 byte, đó là những gì tôi đã ném.

Nói cách khác, nếu kiểu dữ liệu blob là hình ảnh và bạn sử dụng:

 select substring(BlobField,0,100000000) 
 from TableWithHugeBlobField
 where ID = SomeIDValue

 --all you'll get is the first 8K bytes (use DataLength function to get the size)

Tuy nhiên, nếu bạn khai báo một biến varbinary (max) và kiểu dữ liệu trường blob là varbinary (max) - hoặc một số kích thước hữu ích cho bạn - thì hãy sử dụng hàm chuỗi con để đưa lại một phần nhị phân vào biến mà bạn đã khai báo. Điều này hoạt động tốt. Giống như thế này:

 Declare @PartialImage varbinary(max) 
 select @PartialImage = substring(BlobField, 0, 100000000) --1GB
 from TableWithHugeBlobField
 where ID = SomeIDValue

 select DataLength(@PartialImage) -- should = 1GB

Câu hỏi đã được đặt ra trước đó, tại sao lại sử dụng SQL để lưu trữ dữ liệu tệp? Đó là một câu hỏi hợp lệ; hãy tưởng tượng bạn đang phải sao chép dữ liệu dưới dạng tệp tới hàng trăm thiết bị khách khác nhau (như iPhone), mỗi gói là duy nhất với gói kia vì các máy khách khác nhau có nhu cầu khác nhau, khi đó việc lưu trữ các gói tệp dưới dạng các đốm màu trên cơ sở dữ liệu sẽ dễ lập trình hơn rất nhiều chống lại so với việc đào qua các thư mục theo chương trình để tìm gói phù hợp để phát trực tiếp cho khách hàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một số ngẫu nhiên không có trong bảng trong máy chủ sql

  2. Cách tốt nhất để chèn hàng loạt cơ sở dữ liệu từ c # là gì?

  3. Cơ sở dữ liệu + Xác thực Windows + Tên người dùng / Mật khẩu?

  4. Sửa đổi giá trị mặc định trong SQL Server

  5. Sự khác biệt về thời gian thực hiện thủ tục được lưu trữ trong SQL