1、sql中substr函数用法
substr() 函数返回字符串的一部分。
语法:substr(string,start,length)
string - 指定的要截取的字符串。
start - 必需,规定在字符串的何处开始。
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾的指定位置开始
0 - 在字符串中的第一个字符处开始
length - 指定要截取的字符串长度。
2、sql中substring函数用法
功能:返回字符、二进制、文本或图像表达式的一部分
语法:substring ( expression, start, length )
sql 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:
mysql: 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 @str nvarchar(20)
declare @subStr nvarchar(20)
set @str='123456'
set @subStr=subString(@str,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.com 整理)
substr只能作为处理英文字符串的函数使用,对于汉字往往会引起缺陷。
举例:
1、substr('一二三四',1,5)
2、substr('一二三四五六',1,5)
第一个的正确答案是“一二三四”,而第二的正确答案是“一二三四五”。
在程序中往往我们会使用substr函数作为一个输入语句的控制,比如更新表中一条数据,如果表中某一属性要求5位长度,我们会用上述两条语句保证不插入过长的语句,引起数据库报错 。例子:
UPDATE <em>SCHOOL </em>
SET <em>dept_no</em>=substr('高十二班',1,5)
WHERE <em>id</em>=12
这里面dept_no要求5位数据。但是,殊不知substr对于非英文字符不能起到想要的效果。
由于每个汉字占2位,但是substr会把一个汉字当做字符串中的一位。
当用这条语句更新数据库表中要求长度只有5的属性时,会报错的。
转载于:https://my.oschina.net/zz006/blog/810112
