2010-04-17 17 views
11

Có một lĩnh vực hình ảnh và muốn chèn vào điều này từ một chuỗi hex:Chèn chuỗi hex giá trị cho lĩnh vực hình ảnh sql máy chủ được phụ thêm 0

insert into imageTable(imageField) 
values(convert(image, 0x3C3F78...)) 
tuy nhiên

khi tôi chạy chọn giá trị được trở lại với một phụ 0 như 0x03C3F78 ...

Số 0 thừa này gây ra sự cố trong ứng dụng khác, tôi không muốn.

Làm thế nào để dừng thêm 0 được thêm?

Giản đồ là:

CREATE TABLE [dbo].[templates](
    [templateId] [int] IDENTITY(1,1) NOT NULL, 
    [templateName] [nvarchar](50) NOT NULL, 
    [templateBody] [image] NOT NULL, 
    [templateType] [int] NULL) 

và truy vấn là:

insert into templates(templateName, templateBody, templateType) 
values('I love stackoverflow', convert(image, 0x3C3F786D6C2076657273696F6E3D.......), 2) 

chuỗi hex thực tế là khá lớn để trả lời ở đây.

Trả lời

1

này là chính xác cho 0x0: mỗi cặp chữ số làm cho một byte, vì thế 0x00 có giá trị được lưu trữ

Khi tôi chạy SELECT convert(varbinary(max), 0x55) tôi nhận được 0x55 trên SQL Server 2008. SELECT convert(varbinary(max), 85) mang lại cho tôi 0x00000055 đó là chính xác là 85 là một số nguyên 32 bit

Loại dữ liệu nào bạn đang truyền sang biến thể?

Edit: Tôi vẫn không thể tái tạo sử dụng hình ảnh không varbinary

Một số câu hỏi mặc dù:

  • là này một cơ sở dữ liệu nâng cấp? Mức độ tương thích là gì?
  • lý do sử dụng hình ảnh: sử dụng varbinary (max) thay vì
  • điều gì sẽ xảy ra khi bạn thay đổi mọi thứ thành biến thể?
+0

Tôi chọn giá trị hiện tại nó trả về 0x3C3F78 ... và sau đó chèn nó làm bản ghi mới. Sau đó, chọn một trong những mới trở về 0x03C3F78 .... nơi mà không hàng đầu đến từ đâu? Nó gây ra lỗi ở một nơi khác trong ứng dụng. –

+0

@rotary_engine: * chính xác * SQL bạn đang chạy xin vui lòng và lược đồ bảng. – gbn

+0

updat để bao gồm giản đồ và sql nhưng giá trị hex thực tế là quá lớn để đăng ở đây ... –

10

Tôi vừa gặp sự cố tương tự và tôi tự trách mình.

Có thể, bạn chỉ sao chép một phần dữ liệu bạn cần. Trong trường hợp của tôi, tôi đã thêm '0' vào cuối đốm màu.

Nguyên nhân của việc này có thể là sao chép giá trị từ SQL Management Studio vào khay nhớ tạm.


chèn vào imageTable (imageField) giá trị (0x3C3F78 ... A)

Chọn trở: 0x03C3F78 ...


chèn vào imageTable (imageField) giá trị (0x3C3F78 .. .A)

Chọn trở: 0x3C3F78 ...


Tôi hy vọng điều này sẽ hữu ích.

Lời chúc tốt đẹp nhất.

+1

Giải pháp này làm việc hoàn hảo cho tôi (có lẽ câu trả lời này nên được chấp nhận). Chúc mừng! –

Các vấn đề liên quan