【问题标题】:Problem inserting binary data through SQL query (SQL Server 2008)通过 SQL 查询插入二进制数据时出现问题 (SQL Server 2008)
【发布时间】:2011-04-05 15:51:59
【问题描述】:

这些是我发现的用于插入二进制数据(使用 varbinary)的查询,它运行良好 CREATE TABLE Employees (
Id int,
Name varchar(50) not null,
Photo varbinary(max) not null
)

INSERT INTO Employees (Id, Name, Photo)
SELECT 10, 'John', BulkColumn from Openrowset( Bulk 'C:\photo.bmp', Single_Blob) as EmployeePicture

但是如果员工表中的列如下:
CREATE TABLE Employees (
Id int,
Photo varbinary(max) not null,
Name varchar(50) not null
)

[照片栏位在这里第二!]
我尝试操作插入查询,但没有帮助!!

【问题讨论】:

  • 向我们展示您尝试了哪些查询。您是否尝试按原样使用查询?由于您使用的是列出列名的INSERT INTO 的变体,因此列的顺序与它们在实际表中的顺序无关紧要——这就是使用列名的意义——不必担心他们在表格中的顺序。

标签: sql-server-2008 insert binary-data varbinarymax


【解决方案1】:

你会使用

 INSERT INTO Employees
 SELECT 10, BulkColumn AS EmployeePicture, 'John'
 FROM OPENROWSET( BULK 'C:\photo.bmp', Single_Blob) bc

或者

 INSERT INTO Employees
 SELECT 10, 
        (SELECT BulkColumn AS EmployeePicture  FROM OPENROWSET( BULK 'C:\photo.bmp', Single_Blob) bc), 
        'John'

我猜你可能正在尝试这样的事情

 INSERT INTO Employees
 SELECT 10, 
        BulkColumn AS EmployeePicture  FROM OPENROWSET( BULK 'C:\photo.bmp', Single_Blob), 
        'John'

【讨论】:

  • 你是对的马丁!这是我尝试的 7 到 8 个查询之一。 :) 我将使用第二个查询,因为它在逻辑上是合理的,并且可以通过它轻松插入多个二进制数据。是否有任何在线资源可以让我学习和理解这些查询的语法?我知道W3Schools 上提供的SQL 基础知识,但很难找到诸如此类的复杂查询。顺便说一句,您使用哪种格式来显示查询?
  • 要将查询格式化为 StackOverflow 中的代码,请选择要格式化为代码的文本并点击代码图标 {}。不太确定在线资源。不过,Joe Celko 为 Smarties 编写的 SQL 绝对值得一读。
  • 再次感谢马丁。拿到书了,一定会有所收获。
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 2018-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多