Oracle与DB2中内置函数substr(char,position,substring_length)的解析
2009-10-05 23:05
447 查看
Oracle与DB2中的substr()都是是截取给定字符串的字符,但是两者是有差异的。
Oracle:引用自 Oracle.SQL.Reference.10g.r2
The SUBSTR functions return a portion of char, beginning at character position,
substring_length characters long.
DB2:引用自 DB2_UDB_V8_SQL_REFERENCE
The SUBSTR function returns a substring of a string.
对于其他的我不做过多的说明,我在这里只是想说明他们在对于第二、三个参数上的差异做一些解析。
position,代表的是我们要截取的字符串char的起始位置。substring_length是指我们要截取的长度,这里两个数据库的处理方式就有分歧了。
在Oracle中,我们的substring_length长度是可以大于等于char字符串的长度的,但是函数本身的处理是依据你的起始位置position到char字符串结尾位置的长度来处理,并不会跟你所给定的substring_length来确定,相当于是Oracle为我们做了正确性的辨别并处理掉多余的长度。
在DB2中,如果substring_length的长度大于了起始位置到结束位置之间的长度,那么数据库只为我们报错,并不会像Oracle那样执行出我们想得到的结果。
《并且Oralce与DB2里的position取值也存在差异,在Oralce中,position是可以取值为0的,但是在DB2中,取值为0的话会报错。》position都是从1开始算。substr()是指从position开始算(包括position这个字符),截取的长度,也包括位置+长度所在的字符(前提是字符串的长度大于或等于两者之和)。
所以,我们在使用substr()函数的时候,要多加留意,特别是在不同数据库上使用时,一定要做各自的深入分析,不然我们的取值可能就会报错,或者报一些SQL错误。
本文出自 “mai” 博客,请务必保留此出处http://yangwen.blog.51cto.com/337928/209694
Oracle:引用自 Oracle.SQL.Reference.10g.r2
The SUBSTR functions return a portion of char, beginning at character position,
substring_length characters long.
DB2:引用自 DB2_UDB_V8_SQL_REFERENCE
The SUBSTR function returns a substring of a string.
对于其他的我不做过多的说明,我在这里只是想说明他们在对于第二、三个参数上的差异做一些解析。
position,代表的是我们要截取的字符串char的起始位置。substring_length是指我们要截取的长度,这里两个数据库的处理方式就有分歧了。
在Oracle中,我们的substring_length长度是可以大于等于char字符串的长度的,但是函数本身的处理是依据你的起始位置position到char字符串结尾位置的长度来处理,并不会跟你所给定的substring_length来确定,相当于是Oracle为我们做了正确性的辨别并处理掉多余的长度。
在DB2中,如果substring_length的长度大于了起始位置到结束位置之间的长度,那么数据库只为我们报错,并不会像Oracle那样执行出我们想得到的结果。
《并且Oralce与DB2里的position取值也存在差异,在Oralce中,position是可以取值为0的,但是在DB2中,取值为0的话会报错。》position都是从1开始算。substr()是指从position开始算(包括position这个字符),截取的长度,也包括位置+长度所在的字符(前提是字符串的长度大于或等于两者之和)。
所以,我们在使用substr()函数的时候,要多加留意,特别是在不同数据库上使用时,一定要做各自的深入分析,不然我们的取值可能就会报错,或者报一些SQL错误。
本文出自 “mai” 博客,请务必保留此出处http://yangwen.blog.51cto.com/337928/209694
相关文章推荐
- java中 substring 和 oracle的内置函数substr的区别举例说明
- Js中的string.format(),string.substring(start,end),string.substr(start,length)
- substr(oracle) vs substring(mssql) Out了吧?
- Oracle的substr、java的substring、js的substr和substring
- oracle中截取字符串substr对应与sqlserver中的substring
- oracle的NLS_LENGTH_SEMANTICS参数,char,VARCHAR2型的存储方式
- 复杂xml文件解析并导入oracle和db2
- Oracle中char数据类型,length长度不足时,会自动用空格补上
- oracle中length、lengthb、substr、substrb用法小结
- oracle中length、lengthb、substr、substrb用法小结
- Oracle:返回索引instr(), 子字符串substr(),去空格trim(),统一大小写Lower(),Upper(),字符串长度length()
- oracle 中to_char、to_number、to_date的用法解析
- Oracle的substr函数简单用法与substring区别
- oracle笔记整理6——常见函数、scott解锁、length与lengthb、char与varchar
- oracle Lower Upper length substr
- oracle使用substr instr实现类似于java substring的功能
- linux下awk内置函数的使用(split/substr/length)
- oracle字符函数lower() upper() length() substr()
- Oracle的substr函数简单用法 与substring区别
- 【转】linux下awk内置函数的使用(split/substr/length)