Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wybrać tylko część ogromnego pliku binarnego (pliku)?

OK, rozgryzłem to. Sposobem na to jest funkcja substring, o której MS dokładnie mówi, że działa z plikami binarnymi. Nie mówią, że podciąg zwróci tylko 8000 bajtów, co mnie rzuciło.

Innymi słowy, jeśli typem danych blob jest obraz i używasz tego:

 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)

Jeśli jednak zadeklarujesz zmienną varbinary(max), a typem danych pola obiektu blob jest varbinary(max) — lub jakiś rozmiar, który jest dla Ciebie przydatny — użyj funkcji substring, aby przywrócić częściowy plik binarny do zadeklarowanej zmiennej. To działa dobrze. Po prostu tak:

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

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

Pytanie zostało zadane wcześniej, po co używać SQL do przechowywania danych w plikach? To ważne pytanie; wyobraź sobie, że musisz replikować dane jako pliki na setki różnych urządzeń klienckich (takich jak iPhone), każdy pakiet jest inny od drugiego, ponieważ różni klienci mają różne potrzeby, wówczas przechowywanie pakietów plików jako obiektów BLOB w bazie danych jest o wiele łatwiejsze do zaprogramowania niż byłoby to programistyczne przekopywanie się przez foldery w celu znalezienia odpowiedniego pakietu do wysłania do klienta.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C++ wstępnie określa długość VARCHAR przy użyciu parametrów związanych z ODBC

  2. Jak przekonwertować int na date w SQL Server 2008

  3. Ocenianie konfiguracji monitorowania wydajności bazy danych

  4. iteracja przez wiersze datagrid

  5. ISDATE() Przykłady w SQL Server