织梦建站教程,wordpress机械主题,中山外贸网站建设报价,响应式网站的几种尺寸最近遇到一个问题#xff0c;数据表tabA中有一个字段content是blob类型。现在需要通过sql把这个字段的内容展示出来。一般情况我们都是通过后端实现blob转string。但是通过sql查询出blob类型的内容还没遇到过#xff0c;今天把解决这个问题的心理路程记录下。 首先#xff0… 最近遇到一个问题数据表tabA中有一个字段content是blob类型。现在需要通过sql把这个字段的内容展示出来。一般情况我们都是通过后端实现blob转string。但是通过sql查询出blob类型的内容还没遇到过今天把解决这个问题的心理路程记录下。 首先通过网上查询用to_char函数把blob转string select to_char(content) from tabA 这个方法确实可以把blob转string但是当blob的长度超过4000时就不行了。经过查询oracle支持字符串最长为4000如果content内容超过4000sql就报错。显然这个不是解决问题的办法 接着DBMS.LOB.SUBSTR这个函数可以截取字符串。但是只能最大截取2000个字符而且返回的不是字符串。 DBMS.LOB.SUBSTR(content,2000,1):第一个参数是blob字段第二参数截取多少个字符第三个参数开始位置。 select utl_raw.cast_to_varchar2(DBMS.LOB.SUBSTR(content,2000,1)) from tabA utl_raw.cast_to_varchar2函数是把blob转string
这个sql最大能截取2000个字符如果想截取更大长度需求拼接sql最终sql如下 select utl_raw.cast_to_varchar2(DBMS.LOB.SUBSTR(content,2000,1)) || utl_raw.cast_to_varchar2(DBMS.LOB.SUBSTR(content,2000,1)) from tabA 在oracle中最大能截取4000个字符所以只能拼接一次。 其他也可以对blob字段进行排序 select * from tabA order by DBMS_LOB.GETLENGTH(content) desc