Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BLOB到字符串,SQL Server_Sql_Sql Server_Blob_Dynamics Nav - Fatal编程技术网

BLOB到字符串,SQL Server

BLOB到字符串,SQL Server,sql,sql-server,blob,dynamics-nav,Sql,Sql Server,Blob,Dynamics Nav,我将一个文本字符串存储为数据库中的BLOB数据类型。我想通过SQL select查询提取它,但在将BLOB转换为可读的text时遇到问题 我试过了 select convert(nvarchar(40),convert(varbinary(40),BLOBTextToExtract)) from [NavisionSQL$Customer] 我想我需要一些类似的东西,但我不知道我需要做什么转换。谁能给我指路吗 关于这取决于数据最初如何放入列中。尝试以下两种方法之一: SELECT CONVER

我将一个文本字符串存储为数据库中的
BLOB
数据类型。我想通过SQL select查询提取它,但在将
BLOB
转换为可读的
text
时遇到问题

我试过了

select convert(nvarchar(40),convert(varbinary(40),BLOBTextToExtract))
from [NavisionSQL$Customer]
我想我需要一些类似的东西,但我不知道我需要做什么转换。谁能给我指路吗


关于

这取决于数据最初如何放入列中。尝试以下两种方法之一:

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);
你能试试这个吗

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

问题显然不是SQL server,而是更新字段的导航系统。有一个压缩属性可用于NAV中的BLOB字段,它不是SQL Server的一部分。因此,自定义压缩使数据无法读取,尽管转换工作正常

解决方案是通过对象设计器、表设计器和字段属性(字段行上的Shift+F4)关闭压缩

之后,可使用以下工具提取数据: 选择convert(varchar(max)、cast(BLOBFIELD作为二进制文件)) 从桌子上

感谢所有在许多方面都正确的答案

找到了这个

bcp“从TableName中选择前1个BlobText”查询“C:\designationfolder\FileName.txt”-T-C”

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


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

select convert(varchar(max), convert(varbinary(max),myBlobColumn)) FROM table_name

有了第一个,我得到的只是中文符号。第二个返回D | Z表示所有内容。我很确定文本被强制存储为blob(图像)您使用的SQL Server版本是什么?那么您的数据库的兼容级别是什么?在SSMS中右键单击您的数据库并选择属性。在“选项”页面中有一个名为“兼容性”的设置。它有什么价值?例如80=SQL2000。它只返回中文符号。从一开始的数据类型是image(我猜是BLOB)为了避免使用中文符号,最好使用
从table_name中选择convert(varchar(max),convert(varbinary(max),BLOB_column))
我尝试了你的解决方案,但是我得到了以下错误:
不允许从数据类型text显式转换为varbinary。
有什么想法吗..?如果还包含关闭BLOB字段压缩的提示,这应该是可以接受的答案。
select convert(varchar(max), convert(varbinary(max),myBlobColumn)) FROM table_name