首先申明,substr()是基于Oracle的,substring()是基于SQL Server的,切记不可混用,否则会报错!
MySQL: SUBSTR( ), SUBSTRING( )
Oracle: SUBSTR( )
SQL Server: SUBSTRING( )
在plsql中substr是一个单独的函数,字符串索引以1开始。
语法:
substr( string, start_position, [ length ] )
如果start_position是0,substr还是认为是1开始。
如果start_position是正数,substr以start_position开始计算,包含start_position。
如果start_position是负数,则从string结尾开始向前数数。
length,返回字符串的长度,如果是负数,返回NULL。
例子:
substr('This is a test', , 2) would return 'is'
substr('This is a test', 6) would return 'is a test'
substr('TechOnTheNet', 1, 4) would return 'Tech'
substr('TechOnTheNet', -3, 3) would return 'Net'
substr('TechOnTheNet', -6, 3) would return 'The'
substr('TechOnTheNet', -8, 2) would return 'On'
在javascript中有substr和substring两个方法,字符串的索引以0开始。
语法:
substring 方法用于提取字符串中介于两个指定下标之间的字符。
stringObject.substring(start,stop)
说明:
substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
如果 start 或 end 为负数,那么它将被替换为 0。
substr 方法用于返回一个从指定位置开始的指定长度的子字符串。
stringObject.substr(start [, length ])
说明:
如果 length 为 0 或负数,将返回一个空字符串。
如果没有指定该参数,则子字符串将延续到stringObject的最后。
例子:
"0123456789".substring(5) return "56789"
"0123456789".substring(0,5) return "01234"
"0123456789".substring(2,0) return "01"
"0123456789".substring(-1,5) return "01234"
"0123456789".substr(5) return "56789"
"0123456789".substr(2,0) return ""
"0123456789".substr(2,2) return "23"
"0123456789".substr(-1,5) return "01234"
java中substring是string对象的函数,返回位于String 对象中指定位置的子字符串。该索引从0开始起算。
语法:
strVariable.substring(start[,end])
substring 方法使用start和end两者的较小值作为子字符串的起始点。strvar.substring(0,3)和strvar.substring(3, 0)将返回相同的子字符串。
包含start位置的值,不包含end位置的值。
例子:
"05718888888".substring(0,4) returns "0571"
"hamburger".substring(4, returns "urge"
"smiles".substring(1, 5) returns "mile"
除了Oracle的substr以1以字符串索引,其它两个语言都是以0作用索引。
java的substring与javascript的substring相似。
javascript的substr与Oracle/PLSQL的substr相似。
原文出处:http://jw1314.iteye.com/blog/1211431