`
yangwen13
  • 浏览: 4940 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle与DB2中内置函数substr(char,position,substring_length)的解析

阅读更多
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错误。
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics