2011-08-02 11 views
5

データベースにBLOBデータ型として格納されているテキスト文字列があります。 SQLの選択クエリで抽出したいのですが、BLOBから可読性のあるtextへの変換/キャストに問題があります。BLOB to String、SQL Server

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

私は似た何かを必要と推測するが、私は、変換を行う必要があります正確に何を把握することはできません。誰かが私にいくつかの方向を教えてもらえますか?

大丈夫

答えて

7

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

解決策は、オブジェクトデザイナー、テーブルデザイナー、フィールドのプロパティ(フィールド行のShift + F4)で圧縮をオフにすることでした。多くの点で正しかったすべての答えのための

データの抽出は、例えばで行うことができることをした後: ます。select convert(varchar型(最大)、キャスト(バイナリとしてBLOBFIELD))

表からありがとう!この発見

+0

あなたのソリューションを試しましたが、次のエラーが表示されます: 'データ型のテキストからvarbinaryへの明示的な変換は許可されていません。 – mithilatw

4

どのようにデータが最初に列に入れられたかによって異なります。

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

それともそれだけでvarchar ...

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

だった場合、私は確認し、SQL Serverの2K8 R2にテストするためにこのスクリプトを使用:1が動作するはずのようにこれらのいずれかを試してみてください

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); 
+0

BCPフラグ...の、私は中国の兆候を得ます。 2つ目はすべてのD | Zを返します。 – user822448

+0

テキストが強制的にblob(画像)として保存されていることを確信しています – user822448

+0

どのバージョンのSQL Serverを使用していますか? – Yuck

0

あなたはこれを試すことができます:

select convert(nvarchar(max),convert(varbinary(max),blob_column)) from table_name 
+0

これはちょうど中国の記号を返します。最初からのデータ型は画像です(私はBLOBだと思います) – user822448

0

...

bcpは、 "テーブル名のトップ1 BlobTextをSELECT" queryout "C:\ DesinationFolderファイル名.txt \" -T「-c

あなたはさまざまなオプションについて知っておく必要がある場合最初で

http://msdn.microsoft.com/en-us/library/ms162802.aspx

0
CREATE OR REPLACE FUNCTION HASTANE.getXXXXX(p_rowid in rowid) return VARCHAR2 
    as 
      l_data long; 
    begin 
     select XXXXXX into l_data from XXXXX where rowid = p_rowid; 
     return substr(l_data, 1, 4000); 
    end getlabrapor1;