小技巧-如何在SQL查询直接解析大文本内容原创
金蝶云社区-许聪文
许聪文
5人赞赏了该文章 1,422次浏览 未经作者许可,禁止转载编辑于2019年05月23日 11:28:32

BOS的大文本内容默认在SQL存储的是Image类型的,有时候需要第三方查询,或者做报表使用,如何直接解析呢?

用SQL自带的转换函数显然是不行的,只会解析image.png出来乱码和英文。

程序内转换直接获取byt[]数据包,用 Encoding.UTF8.GetString(XXX);  就能转换。

现提供SQL查询解析的方法和思路:

首先,写个DLL类库

image.png

生成后的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

 image.png


赞 5