BOS的大文本内容默认在SQL存储的是Image类型的,有时候需要第三方查询,或者做报表使用,如何直接解析呢?
用SQL自带的转换函数显然是不行的,只会解析出来乱码和英文。
程序内转换直接获取byt[]数据包,用 Encoding.UTF8.GetString(XXX); 就能转换。
现提供SQL查询解析的方法和思路:
首先,写个DLL类库
生成后的DLL放在C盘根目录,也可以其他目录
接着,在SQL对于的业务库中执行如下语句
---开启CLR,SQL最好重启下SQL
exec sp_configure 'show advanced options', '1';
go
reconfigure;
go
exec sp_configure 'clr enabled', '1'
go
reconfigure;
go
----删除
DROP FUNCTION ConvertStr
GO
DROP ASSEMBLY asmConvertStr
GO
---注册类--类生成的名字
CREATE ASSEMBLY asmConvertStr FROM 'C:\Zoano.SqlConvertStr.dll'
GO
---注册函数,传递参数---DLL生成的名字[Zoano.SqlConvertStr.类].静态方法
CREATE FUNCTION dbo.ConvertStr
(
@name as varbinary (max)
)
RETURNS nvarchar ( max )
AS EXTERNAL NAME asmConvertStr.[Zoano.SqlConvertStr.CLRFunctions].ConvertString
GO
---查询(这里直接调用函数查询对应表的大文本image字段,)
SELECT dbo.ConvertStr(convert(varbinary(max),F_ZOAN_LARGETEXT_Tag)) FROM T_CraftGuideOrder
推荐阅读