sql中substr与substring函数⽤法
1、sql中substr函数⽤法
substr() 函数返回字符串的⼀部分。 
语法:substr(string,start,length)
string - 指定的要截取的字符串。
start - 必需,规定在字符串的何处开始。
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾的指定位置开始
0 - 在字符串中的第⼀个字符处开始
length - 指定要截取的。
2、sql中substring函数⽤法
功能:返回字符、⼆进制、⽂本或图像表达式的⼀部分
语法:substring ( expression, start, length )
sql 中的 substring 函数是⽤来抓出⼀个栏位资料中的其中⼀部分。这个函数的名称在不同的资料库中不完全⼀样:
: substr(), s
功能:返回字符、⼆进制、⽂本或图像表达式的⼀部分
语法:substring ( expression, start, length )
sql 中的 substring 函数是⽤来抓出⼀个栏位资料中的其中⼀部分。这个函数的名称在不同的资料库中不完全⼀样:
MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL Server: SUBSTRING()
参数:
expression 字符串、⼆进制字符串、⽂本、图像、列或包含列的表达式。请勿使⽤包含聚合函数的表达式。
start 整数或可以隐式转换为 int 的表达式,指定⼦字符串的开始位置。
length 整数或可以隐式转换为 int 的表达式,指定⼦字符串的长度。
返回值:
如果 expression 是⼀种⽀持的字符数据类型,则返回字符数据。如果 expression 是⼀种⽀持的⼆进制数据类型,则返回⼆进制数据。如果 start = 1,则⼦字符串从表达式的第⼀个字符开始。
返回字符串的类型与给定表达式的类型相同(下表所⽰内容除外)。
substring()
oracle: substr()
sql server: substring()
参数:
expression 字符串、⼆进制字符串、⽂本、图像、列或包含列的表达式。请勿使⽤包含聚合函数的表达式。
start 整数或可以隐式转换为 int 的表达式,指定⼦字符串的开始位置。
length 整数或可以隐式转换为 int 的表达式,指定⼦字符串的长度。
返回值:
如果 expression 是⼀种⽀持的字符数据类型,则返回字符数据。如果 expression 是⼀种⽀持的⼆进制数据类型,则返回⼆进制数据。如果 start = 1,则⼦字符串从表达式的第⼀个字符开始。
返回字符串的类型与给定表达式的类型相同(下表所⽰内容除外)。
注意事项:
不要⽤ start = 0 ,对于有的数据库不⽀持,往往查询结果为0。
有关sql server数据库中substring函数与substr函数的⽤法,以及相关注意事项,substr只能作为处理
英⽂字符串的函数使⽤,对于汉字往往会引起缺陷,需要的朋友参考下。
函数subString有三个参数,如下:
$sourceString  资源字符串。
$startingLoc  ⼦字符串在资源字符串中的起点。如果此值为负数或 0,则只返回那些所在位置⼤于零的字符。如果此值⼤于$sourceString 的长度,则返回长度为零的字符串。
$length        [可选] 要检索的字符数。如果没有指定此值,它将返回$startingLoc 中指定的位置开始直到字符串末尾的所有字符。
在试验中,本⼈发现第⼆个参数的解释中“如果此值为负数或 0,则只返回那些所在位置⼤于零的字符”有特殊的意义,也是⼀个陷阱:负数或0也将占去字符的位置。
例⼦:
declare nvarchar(20)
declare @subStr nvarchar(20)
set @str='123456'
set @subStr=subString(,1,5)
print @subStr
结果: @subStr值为'12345'
如果第⼆个参数$startingLoc给负数或0时,负数或0也将占去字符的位置,
⽐如:
set @subStr=subString(@str,0,5)
@subStr值为'1234'
位置0上没有字符,却占去⼀位的长度
set @subStr=subString(@str,-1,5)
@subStr值为'123'
位置-1和位置0上没有字符,却占去了两位的长度。
所以得出以下结论:使⽤函数subString时,第⼆个参数$startingLoc虽然可以给0或负数,但最好给实际的开始位置,避免造成不必要的⿇烦。
第⼆部分,sql中substr函数注意事项(www.jbxue 整理)
substr只能作为处理英⽂字符串的函数使⽤,对于汉字往往会引起缺陷。
举例:
1、substr('⼀⼆三四',1,5)
2、substr('⼀⼆三四五六',1,5)
第⼀个的正确答案是“⼀⼆三四”,⽽第⼆的正确答案是“⼀⼆三四五”。
在程序中往往我们会使⽤substr函数作为⼀个输⼊语句的控制,⽐如更新表中⼀条数据,如果表中某⼀属性要求5位长度,我们会⽤上述两条语句保证不插⼊过长的语句,引起报错 。例⼦:substring和slice
UPDATE <em>SCHOOL </em>
SET <em>dept_no</em>=substr('⾼⼗⼆班',1,5)
WHERE <em>id</em>=12
这⾥⾯dept_no要求5位数据。但是,殊不知substr对于⾮英⽂字符不能起到想要的效果。由于每个汉字占2位,但是substr会把⼀个汉字当做字符串中的⼀位。
当⽤这条语句更新数据库表中要求长度只有5的属性时,会报错的。
转载于:my.oschina/zz006/blog/810112

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。