oracle数据库存储字段过长怎么解决

1,307 阅读1分钟
工作中经常遇到存储大数据类型的字段。怎么确保存储成功,并不报错。
在Oracle Database中,VARCHAR2字段类型,最大值为4000,SQL参考手册中也明确指出VARCHAR2的最大大小为4000,注意此处的最大长度是指字节长度,而不是指字符个数。这个跟参数NLS_LENGTH_SEMANTICS有一定关系,如下所示,当参数NLS_LENGTH_SEMANTICS为字节时,定义的变量长度为字节长度
一不注意就收到bug库的通知消息。当存储长度超过4000就报ORA-00910
解决办法是什么呢,使用大文本字段,使用复杂,可读性差。一般不建议。我们可以同设计数据库表来解决这个问题。
@Table(name="tb_specification")
public class Specification implements Serializable

/** 主键 规格编号*/
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private Longid;
/** 规格名称 */
@Column(name="spec_name")
private StringspecName;
/** 规格属性集合 */
@Transient
private List<SpecificationOption>specificationOptions;
@Table(name="tb_specification_option")
public class SpecificationOption implements Serializable

/** 编号 主键 */
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private Longid;
/** 规格选项名称 */
@Column(name="option_json")
private StringoptionJson;
/** 规格id */
@Column(name="spec_id")
private LongspecId;
/** 排序 */
@Column(name="orders")
private Integerorders;
规格表
规格选项表
规格ID
规格名称
主键ID
规格外键ID
大数据文本类型
排序
1
内存
1
1
{["xxxx1":xxxxx],["xxxx2",xxxx],
1
2
1
["xxxx3":xxxx],["xxxx4":xxxx],
2
3
1
["xxxx3":xxxx],["xxxx4":xxxx]}
3
代码中使用两个类,做数据封装根据spec_id找到对应的option_json再根据orders做一个排序。那再长的数据量都不担心啦。

更多技术资讯可关注:gzitcast