Hatena::ブログ(Diary)

いろいろ備忘録日記 このページをアンテナに追加 RSSフィード Twitter

2011-01-20 01月20日の日記 (2011年)

[][] SQLServerのbinary/varbinary型の値をSQLで設定する方法 (binary, varbinary, byte[], OPENROWSET, 16進数)


以下自分用のメモです。忘れない内にメモメモ・・。


SQLServerにて、binary/varbinary型の列の値を

SQLで更新する必要がある場合、2つの方法があります。


  1. OPENROWSETを利用する方法
  2. 直接指定する方法

1.の方法は、一旦ファイルにしてからそれを登録する方法です。

INSERT INTO XXXX(binCol) 
    SELECT 
        * 
    FROM 
        OPENROWSET(BULK N'C:\XXXX.dat', SINGLE_BLOB)

2.のやり方は文字通りSQLの中に直接埋め込みます。

結果は、「16進数にしてぶち込む」という事になります。


以下、サンプルSQLです。

update [XXXX]
set
     [binCol] = 0x866d5e1ef12ad8e06725f2fe
where
     [id] = 1

上記のように、先頭に「0x」を付与して16進数で値を構築します。


.NETで開発している場合は、ADO.NET側でうまくやってくれるので

基本的にbyte[]しか相手にしませんので、気にしなくてOKです。


以下、ついでにサンプル用の16進数を作成したちょんプロ。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] buf = new byte[100];
            new Random().NextBytes(buf);

            Console.WriteLine("0x{0}", string.Join("", buf.Select(b => Convert.ToString(b, 16)).ToArray()));
            Console.ReadKey();
        }
    }
}

【参照リソース



================================

過去の記事については、以下のページからご参照下さい。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証