Convertir en Tableau d'Octets à l'aide de la chaîne TransactSQL
Nous sommes magasin de la chaîne de valeurs dans une base de données à l'aide de type varBinary à l'aide de c# et de BinaryFormatter.Nous convertir au tableau d'octets, puis nous enregistrer dans la Base de données
public static byte[] ToBytes(stringvalue)
{
if (value == null)
return null;
byte[] inMemoryBytes;
using (MemoryStream inMemoryData = new MemoryStream())
{
new BinaryFormatter().Serialize(inMemoryData, value);
inMemoryBytes = inMemoryData.ToArray();
}
return inMemoryBytes;
}
OK, Donc, si nous sauver char "une", nous pouvons voir "0x0001000000FFFFFFFF0100000000000000060100000001610b" dans la base de données.Après, nous pouvons récupérer les données et de les convertir à nouveau à la chaîne.
Peut-on convertir cette valeur binaire ("0x0001000000FFFFFFFF0100000000000000060100000001610b") char ("un") uniquement à l'aide de transact SQL (donc, nous pouvons faire des modifications, des insertions, comparations à partir de sql server console)?
Merci beaucoup.
OriginalL'auteur Oscar | 2010-01-25
Vous devez vous connecter pour publier un commentaire.
Vous pourriez utiliser quelque chose de simple, comme
Qui sera de retour "61" et peut être plus facilement convertis en un type varchar, juste:
Oscar, peut
BitConverter.GetBytes
être utile?mais c'est une méthode à partir de l' .Net framework,n'est-il pas? Je veux utiliser uniquement SqlConsole. Im de la programmation à l'aide de Sql CLR fonctions, selon Kleinux. Merci encore.
OriginalL'auteur Rubens Farias
Je suggérerais à l'aide de la méthode décrite http://msdn.microsoft.com/en-us/magazine/cc163473.aspx utilisation de l' .NET bibliothèque regex. En particulier la section pour le CLR Fonctions Définies par l'Utilisateur. Vous pouvez simplement utiliser le BinaryFormatter pour désérialiser votre tableau d'octets.
OriginalL'auteur Kleinux
Pourquoi ne pouvez-vous pas tout simplement mettre la chaîne d'origine dans un
nvarchar(MAX)
type de la colonne?Si vous devez utiliser le
varbinary
type de colonne, puis au moins utiliser leSystem.Text.Encoding
classes pour faire la conversion - ensuite, vous pouvez décoder les chaînes sql ainsi:Et ensuite l'utiliser comme ceci:
Ensuite, vous pouvez utiliser le CLR définis par l'utilisateur des fonctions comme l'a suggéré Kleinux.
OriginalL'auteur Pent Ploompuu