在很多场景中,都有如下情况 trim(a.colunm1) = trim(b.colunm2) 应该怎么优化呢? 用到 TRIM 的很多原因是某些系统为了提高查询效率,不使用  ORACLE 的特有的,优秀的,且前无古人后无来者定义的  VARCHAR2 ,而是使用 CHAR 类型,写死了字符长度. 因此,在关联查询的时候就郁闷了,新建立的表就使用的 VARCHAR2 ,如果不用 TRIM 去掉 CHAR 类型的空格吧,又没办法匹配,如果用 TRIM 吧,索引又被破坏. 而且,重点是,虽然添加一…
感谢原作者:破剑冰-Oracle中Clob类型处理解析 上一篇分析:ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值 最近为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的LONG值赋值).经过不断查找资料和自己的试验该问题终于得到解决,下边我将自己的心得给大家做一个分享. 准备 系统环境 xp+.net2.0+oracle9i 表结构(由于是测试,表结构随便建了一…
1.to_date() 和to_timestamp()区别 由于oracle中date类型只支持到秒,不支持到毫秒,所以to_date()不能取到毫秒.如果要取到毫秒,oracle 9i以上版本,可以使用timestamp类型, timestamp是date的扩展类型,能支持到毫秒,毫秒的显示精度是6位,不过有效位是3位,即最大值达到999,满1000ms就进为1s. 而与to_date()对应的转换函数可以使用to_timestamp().两个date相减得到是两个时间的间隔,单位是天,两个t…
今天在做 COS脚本解释器的时候,遇到了这个问题 先了解一下 LPCTCHAR 这个东东 LPCTSTR用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串. 那么什么叫UNICODE(统一码)??? 背景知识:    计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码.ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个…
1.char是固定长度的,例如你定义某一列类型为char(20).那么即便你插入"abcde"5个字节,数据库也会在后面自动加上15个字节(可能为空格),以补足二十个字节. 2.vchar vchar是变长的.比如你定义某列为vchar(20),你插入"abcde"5个字节,数据库就只存储5个字节.20是数据库对该列存储的最大长度. 3.vchar2 Vchar2是oracle自己定义的类型,基本等同于vchar.只不过vchar可以存储空字符串.而vchar2存储…
最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的LONG值赋值).经过不断查找资料和自己的试验该问题终于得到解决,下边我将自己的心得给大家做一个分享. 准备 系统环境 xp+.net2.0+oracle9i 表结构(由于是测试,表结构随便建了一张) XX  字段名 类型 ID VARCHAR2(70) TEST CLOB   测试   方式1:直…
NULL值是关系数据库系统布尔型(true,false,unknown)中比较特殊类型的一种值,通常称为UNKNOWN或空值,即是未知的,不确定的.由于NULL存在着无数的可能,因此NULL值也不等于NULL值,所以与NULL值相关的操作同样都为NULL值.正是基于这样一个特性,对于NULL值列上的B树索引导致了is null/is not null不走索引的情形,下面描述了NULL值与索引以及索引NULL列上的执行计划,如何使得NULL值走索引的情形.注:本文仅仅讨论的是B树索引上的NULL值…
转:原文:http://blog.csdn.net/pojianbing/article/details/2789426      最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在2000-4000之间时报错(ORA-01461:仅可以插入LONG列的LONG值赋值).经过不断查找资料和自己的试验该问题终于得到解决,下边我将自己的心得给大家做一个分享. 准备 系统环境 xp+.net2.0+oracle9i 表结构(…
为纪念中华人民共和国建军90周年,特此一篇,以此纪念,我军威武!!! 一.问题背景 项目中商品发布,却没有保存成功. 二.问题定位 初步判断向数据库中保存时出现了错误,查看日志文件,由于日志文件过大就采用grep进行搜索(再一次说明grep 的强大) 其中 "ReserveProductService.update" 是要搜索的关键字,catalina.out是日志文件, -n 显示搜索内容所在行数, -B 2 是显示搜索内容的前两行(还有-C 前后几行,-A 后几行) 将2换成更大值…
VARCHAR.VARCHAR2.CHAR的区别 1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储. 2.CHAR的效率比VARCHAR2的效率稍高. 3.目前VARCHAR是VARCHAR2的同义词.工业标准的VARCHAR类型可以存储空字符串,但是…