Insérer une valeur de chaîne hexadécimale à sql. Le champ d'image du serveur ajoute 0
Ont un champ d'image et à insérer dans le présent à partir d'une chaîne hexadécimale:
insert into imageTable(imageField)
values(convert(image, 0x3C3F78...))
cependant quand je lance sélectionnez la valeur est de retour avec un supplément de 0 comme 0x03C3F78...
Ce supplément de 0 est l'origine d'un problème dans une autre application, je ne veux pas.
Comment arrêter le supplément de 0 ajoutés?
Le schéma est:
CREATE TABLE [dbo].[templates](
[templateId] [int] IDENTITY(1,1) NOT NULL,
[templateName] [nvarchar](50) NOT NULL,
[templateBody] [image] NOT NULL,
[templateType] [int] NULL)
et la requête est:
insert into templates(templateName, templateBody, templateType)
values('I love stackoverflow', convert(image, 0x3C3F786D6C2076657273696F6E3D.......), 2)
le véritable chaîne hexadécimale est assez grand pour poster ici.
source d'informationauteur rotary_engine
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu le même problème et je blâme moi-même.
Il est possible, que vous copiez juste une partie des données dont vous avez besoin. Dans mon cas, je ajouté '0' à la fin de la goutte.
La cause de ce qui pourrait être la copie de la valeur à partir de SQL Management Studio dans le presse-papiers.
insérer dans imageTable(imageField) values(0x3C3F78...)
Sélectionnez retourné: 0x03C3F78...
insérer dans imageTable(imageField) values(0x3C3F78...Un 0 )
Sélectionnez retourné: 0x3C3F78...
J'espère que cela aidera.
Meilleurs vœux.
C'est correct pour 0x0: chaque paire de chiffres fait un octet donc 0x00 a la valeur stockée
Quand je lance
SELECT convert(varbinary(max), 0x55)
- je obtenir 0x55 sur SQL Server 2008.SELECT convert(varbinary(max), 85)
me donne 0x00000055 ce qui est correct est de 85 est un entier de 32 bits,Quel type de données sont vous un casting pour varbinary?
Edit: je n'arrive pas à reproduire à l'aide d'image pas varbinary
Quelques questions cependant: