数据库中的substring
不同数据库中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的数据库没装,就不去测试,现在把相关学习网址附上。
Oracle
http://www.techonthenet.com/oracle/functions/substr.php
Sqlserver
http://msdn.microsoft.com/en-us/library/ms187748.aspx
Mysql
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
DB2
http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2.doc.sqlref%2Ffsubstr.htm
页:
[1]