将文本blob从Firebird转换为nvarchar到SQL Server
我正在使用将文本blob从Firebird转换为nvarchar到SQL Server,sql,sql-server,type-conversion,firebird,openquery,Sql,Sql Server,Type Conversion,Firebird,Openquery,我正在使用SQL Server,并且在我的SQL Server中有一个Firebird数据库作为链接服务器 我正在尝试执行OPENQUERY从Firebirddb导入数据 SELECT * FROM OPENQUERY(Workbench, 'SELECT * FROM table_name') 我得到以下错误 OLE DB provider "MSDASQL" for linked server "Workbench" returned message "Requested conversi
SQL Server
,并且在我的SQL Server中有一个Firebird
数据库作为链接服务器
我正在尝试执行OPENQUERY
从Firebird
db导入数据
SELECT * FROM OPENQUERY(Workbench, 'SELECT * FROM table_name')
我得到以下错误
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
db中的数据类型NOTES
字段是blob
。如果省略字段NOTES
,则执行查询并正确导入结果
但是我需要NOTES
字段中的信息,我正在寻找一种方法,将blob字段转换为nvarchar
。我认为这应该在Openquery
中完成(即在查询的Firebird端)
有人能推荐一个纯SQL
解决方案,在Firebird
中将blob
转换为nvarchar
吗
如果这不适合你
您的字段注释是大文本还是相对较小的<32767个字符?
如果它很小-尝试将其转换为varchar
SELECT CAST(NOTES AS VARCHAR(32767)), other fields FROM TABLE_NAME
首先尝试使用最小的音符和较小的varchar cast,看看它是否有效
如果是而不是可能-问题完全在于blob我相信Firebird
blob
是MS SQL中的image
数据类型,所以转换到varbinary
然后转换到varchar
应该会有所帮助。你试过这个吗
select cast(cast(NOTES as varbinary(max)) as varchar(max)) from openquery(Workbench,'select * from table_name')
希望这有帮助。迟来的回答,但也许它可以帮助某人 可以通过以下语句将blob强制转换为varchar:
SELECT CAST(SUBSTRING(BlobColumn FROM 1 FOR 32000) AS VARCHAR(32000)) AS NewBlobColumn
FROM TABLE_NAME
然后您可以在OPENQUERY语句中使用它文本blob的字符集是什么,连接字符集是什么?@markrottevel:谢谢您的回复标记。。对不起,我怎样才能检查那个字符集?请告诉我??对于blob字符集:查看表的DDL,对于连接字符集:查看ODBC数据源的连接字符串。