web-dev-qa-db-ja.com

VARBINARYデータを挿入するテーブルを更新します

SQLクエリを実行すると、次のようなメッセージが表示されます。

データ型varcharからデータ型varbinaryへの暗黙的な変換は許可されていません...このクエリを実行するには、CONVERT関数を使用します。 (重大度16) `

挿入したいデータは次のようになります

'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'

このクエリを実行するにはどうすればよいですか?

クエリは次のようになります:

UPDATE <table> SET VARBINARY_DATA = '00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....' WHERE ID = 12
16
John

SQL Server 2005以降、CONVERTは必要な処理を実行します。

CONVERT(varbinary(2000), '00001340132401324...', 2)

バイナリへの変換/バイナリからの変換のスタイルは次のとおりです。

  • 0:生データ、ASCIIコードポイントはバイナリバイトになり、UTF-16コードポイントはそれぞれ2バイトになります。
  • 1:「0x」で始まる16進形式
  • 2:「0x」のプレフィックスが付いていない16進形式

文字をフォーマット0のバイナリに変換する場合:

  • charまたはvarcharデータ(ASCII、ISO-8859-1など)はバイナリバイトになります。単一文字エンコーディングの場合、これは文字ごとに1バイトを意味します。
  • ncharまたはnvarcharデータ(つまり、UTF-16)は、ビッグエンディアン形式でそれぞれ2バイトになるため、N'ABC'0x410042004300になります。

フォーマット1および2で16進数を2進数に変換する場合。

  • 2つの入力16進数はそれぞれ1バイトになります
  • 入力が有効な16進数でない場合、エラーが発生します
  • 空白と句読点は許可されていません

MSDNを参照してください:

UTF-8が必要な場合は、テキストをUTF-8に変換するUDFについて、ここで私の回答を参照してください。

45
Ben