一.varchar2改为clob
MYSQL修改列名写法:ALTER TABLE `表名` CHANGE COLUMN `旧列名` `新列名` DATETIME NULL DEFAULT NULL COMMENT '修改时间' ;
1.BLOB
BLOB全称为二进制大型对象(Binary Large Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节
2.CLOB
CLOB全称为字符大型对象(Character Large Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节
通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。
JAVA里面对CLOB的操作
在绝大多数情况下,使用2种方法使用CLOB
1 相对比较小的,可以用String进行直接操作,把CLOB看成字符串类型即可
2 如果比较大,可以用 getAsciiStream 或者 getUnicodeStream 以及对应的 setAsciiStream 和 setUnicodeStream 即可
三.CLOB字段和varchar
如果能控制在4000个字符以内的,尽量还是用varchar2(4000 CHAR)吧 如果超过了,也只好用clob了。处理起来其实也还好,基本是在程序里面当作varchar来处理即可
超过就只能用CLOB,12C里面有32K的VARCHAR2,但是实现起来还是CLOB。 如果在CLOB里面存短文本,ORACLE还是会像VARCHAR2一样处理,不会和其他字段分开存储。
四.str绑定值的结尾null字符缺失
首先将数据长度确定出来。注意:中文占用字节长度的问题;根据字符集编码的不同,在oracle里有可能占2或者3个字节。其次查看定义的字段长度,我的字段长度为vachar2(4000),貌似varchar2最长就是4000,好奇的可以去查查这方面的问题。
1.报表中sql定义的最大长度是4000,在sql中如果字节个数大于4000的话,
一个字符占两个字节,也就是 汉字*2+字母数 不能大于2000
2.在复制excel粘贴到数据库中得时候也出现报错,原因是有一个单元格中有半个双引号,反映到数据库中识别就有问题了。
解决办法:去掉半个双引号。
3.我的字段小于4000,没发现多余的引号,回车也去掉了也不行,后来,把excel中很长文本的那一列的格式修改成“文本”,再拷贝到
数据库中,提交就不报错了
终极解决方案:修改列的类型,vachar改成clob
五.复制表格数据
5.1只是复制表结构
当where1=2恒等于false,所以这条语句不能查出任何数据,只能有表结构。所以实现了
只复制表结构不复制表数据
功能
5.2复制表数据和表结构
https://www.cnblogs.com/Marydon20170307/p/10008762.html
线上系统使用了一段时间,录入了不少数据,发现其中一个字段(
varchar
)长度不足,需要转换成
clob
,需要在有数据的情况下实现字段
类型
的转换.总共4步,如下所示:
1.先要在表中新增一个
clob
类型
的字段
alter table (表名) add (字段)
clob
2.然后把原先的字段的数据赋值到新的字段中
update (表名) set (新的字段) = (旧的字段)
3.删除原先旧的字段
alter table (表名) drop (字段名); < 此drop 这里的括号不能去掉 &
这两种
类型
之间的转换基本思想都是通过临时
列
来过渡,相对规范的
步骤
:
1.将需要转的
列
改变成一个其它的名称;
2.创建一个大字段
列
,名称与
varchar
2字段的原名称相同;
3.直接将
varchar
2字段赋值给
clob
字段
列
;
4.将原来的
varchar
2字段
列
删除;
标准
varchar
2到
clob
转换
步骤
alter table tableName rename column
SQL> desc test
Name Null? Type
----------------------------------------- -------- ----------------------------
ID ...
@Basic(fetch = FetchType.EAGER)
@Column(name="RESPONSE_DATA", columnDefinition="
CLOB
", nullable=true)
public String getResponseData() {
return responseData;
今天遇到一个协议字段
类型
varchar
2
类型
数据不够大,需
改为
clob
类型
。
在
Oracle
中,如果一个
列
的
类型
为
varchar
2,那么它不能直接转换为
CLOB
类型
。需要清空字段的数据内容,然后把原来的字段删掉,重新建个字段
类型
为
CLOB
即可!
CMS系统中有一个表的字段(如:content)是
varchar
2
类型
(最多只能存储4000字符),不够用了,因此将其
改为
clob
类型
(支持4G存储量)。
如果该字段content
列
不为空的话,不能直接通过sql语句
修改
其字段
类型
,会报ORA-22858的错误,如图所示:
在项目中遇到原来的
varchar
2
类型
长度不够了,仅为4000.需要
修改
为
clob
,但因该字段已有大量数据。从网上找了很多资料,介绍很模糊,研究一番,在此贴出供迷途的战士参考。
首先给原来
varchar
2
类型
的字段result改名为result1.
alter table OpContent rename column result to resul...
一切都要先问清楚了再做,事实是不需要这么去做的,大字段在计算的时候不需要,所以大字段都可以删除掉,只留统计信息就可以了1.alter table patent_analysis.sys_patent_info add(tmp
clob
);
2,ALTER TABLE sys_patent_info NOLOGGIdeclare i integer;
BEGIN
i := 0;
for crC
数据库中提供了三种字段
类型
Varchar
2、
Blob
和
Clob
用于存储字符串或二进制数据,其中
Varchar
2、
Clob
用于存储字符串数据,而
Blob
用于存储二进制数据。
Varchar
2采用单字节存储,有两个最大长度:一个是在字段
类型
4000;一个是在PL/SQL中变量
类型
32767。
今天犯了一个小错误,就是函数的
varchar
2
类型
的返回值长度也是4000,而不是我以为的3276