|
|
|
不同数据库中substring的差异
substring在不同数据库中存在差异,该函数用来求一个字符串的字串。该函数的使用频率很高。下面介绍在不同的数据库中该函数的使用方法与差异。
字符串:”2011-11-17”
0
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 9
| 10
| 11
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2
| 0
| 1
| 1
| -
| 1
| 1
| -
| 1
| 7
|
|
|
|
|
|
|
|
|
|
|
|
|
| -11
| -10
| -9
| -8
| -7
| -6
| -5
| -4
| -3
| -2
| -1
| 0
|
1.在Oracle中求字符串的函数为:substr
The syntax for the substr function is:
substr( string, start_position, [ length ] )
string:源字符串
start_position:子串第一个字符在源字符串中的起始位置
length:子串长度
测试结果:
1
| substr('2011-11-17',0,7)
| 2011-11
| 2
| substr('2011-11-17',1,7)
| 2011-11
| 3
| substr('2011-11-17',1,10)
| 2011-11-17
| 4
| substr('2011-11-17',1,11)
| 2011-11-17
| 5
| substr('2011-11-17',-1,7)
| 7
| 6
| substr('2011-11-17',-8,8)
| 11-11-17
| 7
| substr('2011-11-17',-10,7)
| 2011-11
| 8
| substr('2011-11-17',-11,7)
| null
| 9
| substr('2011-11-17',-11)
| null
| 10
| substr('2011-11-17',-1)
| 7
| 11
| substr('2011-11-17',6)
| 11-17
| 12
| substr('2011-11-17',11)
| null
| 13
| substr (‘2011-11-17’,1,null)
| null
| 14
| substr (‘2011-11-17’,null,1)
| null
| 15
| substr (‘2011-11-17’,null,null)
| null
| 16
| substr ('2011-11-17',1,0)
| null
| 17
| substr ('2011-11-17',1,-1)
| null
| 18
| substr ('2011-11-17',11,11)
| null
|
Oracle中规定:
1) start_position==0时,子串的起始位置为1,即从第一个字符开始;
2) start_position<0时,字串的起始位置从字符串尾部开始后推。
3) length参数可以缺省。
2. 在SqlSever中求字符串的函数为:substring
Syntax:
SUBSTRING ( value_expression , start_expression , length_expression )
value_expression:字符串,二进制数据,文本,图像
start_expression:子串第一个字符在源字符串中的起始位置
length_expression:子串长度
测试结果:
1
| substring (‘2011-11-17’,0,7)
| 2011-1
| 2
| substring (‘2011-11-17’,1,7)
| 2011-11
| 3
| substring (‘2011-11-17’,1,10)
| 2011-11-17
| 4
| substring (‘2011-11-17’,1,11)
| 2011-11-17
| 5
| substring (‘2011-11-17’,-1,7)
| 2011-
| 6
| substring (‘2011-11-17’,-8,8)
|
| 7
| substring (‘2011-11-17’,-10,7)
|
| 8
| substring (‘2011-11-17’,-11,7)
|
| 9
| substring (‘2011-11-17’,-11)
| error
| 10
| substring (‘2011-11-17’,-1)
| error
| 11
| substring (‘2011-11-17’,6)
| error
| 12
| substring (‘2011-11-17’,11)
| error
| 13
| substring (‘2011-11-17’,1,null)
| null
| 14
| substring (‘2011-11-17’,null,1)
| null
| 15
| substring (‘2011-11-17’,null,null)
| null
| 16
| substring ('2011-11-17',1,0)
|
| 17
| substring ('2011-11-17',1,-1)
| error
| 18
| substring ('2011-11-17',11,11)
|
| 19
| substring ('2011-11-17',-1,1)
|
| 20
| substring ('2011-11-17',-1,2)
|
| 21
| substring ('2011-11-17',-1,3)
| 2
| 22
| substring ('2011-11-17',-1,9)
| 2011-11
|
SqlServer中规定:
1) start_expression<1时,
length_expression = max(start_expression + length_expression – 1,0),
子串的起始位置为1,即从第一个字符开始;
2) substring中三个参数缺一不可;
3) 字符串长度不能为负数。
3.扩展:
由于MySqL和DB2的数据库没装,就不去测试,现在把相关学习网址附上。
|
|