13

BLOBデータベースにデータ型として保存されているテキスト文字列があります。SQL selectクエリで抽出したいのですが、BLOBから読み取り可能への変換/キャストに問題がありますtext

私は例えば試しました

select convert(nvarchar(40),convert(varbinary(40),BLOBTextToExtract))
from [NavisionSQL$Customer]

似たようなものが必要だと思いますが、変換を行うために何が必要かを正確に理解することはできません。誰かが私にいくつかの指示を教えてもらえますか?

よろしく

4

6 に答える 6

8

問題は明らかに SQL サーバーではなく、フィールドを更新する NAV システムでした。NAV の BLOB フィールドで使用できる圧縮プロパティがありますが、これは SQL Server の一部ではありません。そのため、変換は機能しましたが、カスタム圧縮によりデータが読み取れなくなりました。

解決策は、オブジェクト デザイナー、テーブル デザイナー、フィールドのプロパティ (フィールド行で Shift+F4) を使用して圧縮をオフにすることでした。

その後、データの抽出は次のように行うことができます: select convert(varchar(max), cast(BLOBFIELD as binary)) from Table

多くの点で正しかったすべての回答に感謝します!

于 2011-08-03T06:47:21.057 に答える
4

これは、データが最初に列に配置された方法によって異なります。動作するはずなので、これらのいずれかを試してください。

SELECT CONVERT(NVarChar(40), BLOBTextToExtract)
FROM [NavisionSQL$Customer];

またはそれがちょうどだったらvarchar...

SELECT CONVERT(VarChar(40), BLOBTextToExtract)
FROM [NavisionSQL$Customer];

このスクリプトを使用して、SQL Server2K8R2で検証およびテストしました。

DECLARE @blob VarBinary(MAX) = CONVERT(VarBinary(MAX), 'test');

-- show the binary representation
SELECT @blob;

-- this doesn't work
SELECT CONVERT(NVarChar(100), @blob);

-- but this does
SELECT CONVERT(VarChar(100), @blob);
于 2011-08-02T11:46:54.137 に答える
1

これを試すことができますか:

select convert(nvarchar(max),convert(varbinary(max),blob_column)) from table_name
于 2011-08-02T11:49:19.617 に答える