首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Firebird到SQL Server将文本blob转换为nvarchar

从Firebird到SQL Server将文本blob转换为nvarchar
EN

Stack Overflow用户
提问于 2014-05-29 18:40:44
回答 3查看 8.8K关注 0票数 4

我正在使用SQL Server,并且在我的SQL Server中有一个Firebird数据库作为链接服务器。

我正在尝试执行一个从Firebird数据库导入数据的OPENQUERY

代码语言:javascript
运行
复制
SELECT * FROM OPENQUERY(Workbench, 'SELECT * FROM table_name')

我得到了下面的错误。

代码语言:javascript
运行
复制
OLE DB provider "MSDASQL" for linked server "Workbench" returned message "Requested conversion is not supported.".
Msg 7341, Level 16, State 2, Line 4
Cannot get the current row value of column "[MSDASQL].NOTES" from OLE DB provider "MSDASQL" for linked server "Workbench". 

Firebird数据库中的数据类型NOTES字段为blob。如果我省略了字段NOTES,查询就会执行,并且结果会被正确导入。

但是我需要NOTES字段中的信息,并且正在寻找一种方法来将blob字段type castnvarchar。我认为这应该在Openquery中完成(即在查询的火鸟端)。

有没有人能推荐一个纯SQL的解决方案,将blob转换成Firebird中的nvarchar

EN

回答 3

Stack Overflow用户

发布于 2014-09-12 14:31:42

查看Microsoft KB OLE DB conversion errors may occur

如果这对您不起作用,那么您的现场笔记是大文本还是小于32767个字符?如果它很小,请尝试将其转换为32767 i got from here - limitations in Firebird

代码语言:javascript
运行
复制
SELECT CAST(NOTES AS VARCHAR(32767)), other fields FROM TABLE_NAME

首先尝试使用最小的音符和较小的varchar类型转换-看看它是否有效-问题根本就是blob

票数 1
EN

Stack Overflow用户

发布于 2017-10-23 23:05:14

回答晚了,但也许它能帮助一些人...

您可以通过以下语句将blob转换为varchar:

代码语言:javascript
运行
复制
SELECT CAST(SUBSTRING(BlobColumn FROM 1 FOR 32000) AS VARCHAR(32000)) AS NewBlobColumn
FROM TABLE_NAME

然后,您可以在OPENQUERY-语句中使用它

票数 1
EN

Stack Overflow用户

发布于 2014-09-24 21:09:33

我相信Firebird blob在MS SQL中是image数据类型,所以先转换为varbinary,再转换为varchar应该会有所帮助。你试过这个吗?

代码语言:javascript
运行
复制
select cast(cast(NOTES as varbinary(max)) as varchar(max)) from openquery(Workbench,'select * from table_name')

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23931447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档