13

我有一个文本字符串作为BLOB数据类型存储在数据库中。我想通过 SQL 选择查询来提取它,但是在从BLOBreadable转换/转换时遇到问题text

我试过了,例如

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

我想我需要类似的东西,但我无法确切地知道我需要做什么来进行转换。有人可以给我一些指示吗?

问候

4

6 回答 6

9

接受的答案仅适用于前 30 个字符。这对我有用:

select convert(varchar(max), convert(varbinary(max),myBlobColumn)) FROM table_name
于 2019-08-08T05:32:38.207 回答
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 Server 2K8 R2 上进行验证和测试:

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 回答
0

发现这个...

bcp "SELECT top 1 BlobText FROM TableName" queryout "C:\DesinationFolder\FileName.txt" -T -c'

如果您需要了解 bcp 标志的不同选项...

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

于 2013-05-02T15:38:35.513 回答
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;
于 2015-06-11T10:46:00.217 回答