前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >达梦数据库查询用map接收 text字段会被转成clod字段

达梦数据库查询用map接收 text字段会被转成clod字段

作者头像
用户9131103
发布2023-07-17 19:57:30
9570
发布2023-07-17 19:57:30
举报
文章被收录于专栏:工作经验工作经验

达梦数据库中,text类型字段会自动转换为cloud类型字段。因此,当您使用map接收text类型字段时,达梦数据库会将该字段的数据类型转换为cloud类型,导致数据类型错误。如果您需要在map中接收text类型字段,请将该字段的数据类型在查询语句中指定为text类型。例如,假设您的查询语句为SELECT name, CAST(content AS TEXT) FROM table_name,其中content是text类型字段,您可以使用CAST函数将其转换为text类型,然后在map中接收。

达梦数据库中的text类型是一种LOB(Large Object),用于存储大量的文本数据。而clob也是一种LOB类型,用于存储字符型数据。在达梦数据库中,text类型字段会被自动转换为clob类型,因为它们都属于LOB类型,并且具有相似的特性。这种转换可能会发生在查询、插入、更新等操作中,如果您需要明确使用text类型,建议在SQL语句中显式地指定该字段为text类型,以避免数据类型错误。

代码语言:javascript
复制
   Map<String, Object> entity = this.genericMapper.getRecordMapById(formTable, recordId);
代码语言:javascript
复制
 while(var3.hasNext()) {
                                            String key = (String)var3.next();
                                            if (itemx.get(key) instanceof ClobProxyImpl) {
                                                ClobProxyImpl clobProxy = (ClobProxyImpl)itemx.get(key);
                                                itemx.put(key, OracleUtils.clobToString(clobProxy));
                                            } else if (itemx.get(key) instanceof Blob) {
                                                Blob blob = (Blob)itemx.get(key);
                                                itemx.put(key, OracleUtils.blobToString(blob));
                                            }
                                        }
代码语言:javascript
复制
package com.jinw.utils;

import com.alibaba.druid.proxy.jdbc.ClobProxyImpl;

import java.sql.Blob;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * @ClassName OracleUtils
 * @Description 一句话描述类的作用
 * @Author liux
 * @Date 2021/12/22 16:22
 **/
public class OracleUtils {
    public static String clobToString(ClobProxyImpl clobProxy) throws SQLException {
        String subString = clobProxy.getSubString(1, (int) clobProxy.length());
        return subString;
    }

    public static String blobToString(Blob blob) throws Exception {
        String newStr = "";
        int blobLength = (int) blob.length();
        byte[] bytes = blob.getBytes(1, blobLength);
        if(bytes == null || blobLength == 0){
            return "";
        }else {
            int i = 1;
            while(i < blobLength){
                bytes = blob.getBytes(i,1024);
                i = i + 1024;
                newStr = newStr + new String(bytes,"UTF-8");
            }
        }
        return newStr;
    }
}
代码语言:javascript
复制
package com.jinw.utils;

import com.alibaba.druid.proxy.jdbc.ClobProxyImpl;

import java.sql.Blob;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * @ClassName OracleUtils
 * @Description 一句话描述类的作用
 * @Author liux
 * @Date 2021/12/22 16:22
 **/
public class OracleUtils {
    public static String clobToString(ClobProxyImpl clobProxy) throws SQLException {
        String subString = clobProxy.getSubString(1, (int) clobProxy.length());
        return subString;
    }

    public static String blobToString(Blob blob) throws Exception {
        String newStr = "";
        int blobLength = (int) blob.length();
        byte[] bytes = blob.getBytes(1, blobLength);
        if(bytes == null || blobLength == 0){
            return "";
        }else {
            int i = 1;
            while(i < blobLength){
                bytes = blob.getBytes(i,1024);
                i = i + 1024;
                newStr = newStr + new String(bytes,"UTF-8");
            }
        }
        return newStr;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年05月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档