1 区别
substr(string ,pos,len)是sql函数,第一个位置下标是1,而不是0,pos从1开始;
s.substr(pos,len)是C++函数,第一个位置下标是0,pos从0开始;
二者函数名字一样,用法不一样。
string str1 = "012345";
string s1 = str1.substr(1,3);
string s2 = substr('012345', 1, 3);
输出:
s1是C++用法: 123;
s2是sql用法:012;
2 s.substr(pos, len)
语法
substr(size_type _Off = 0,size_type _Count = npos)
参数:
_Off——所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0。
_Count——复制的字符数目
返回值——一个子字符串,从其指定的位置开始
一种构造string的方法
形式 : s.substr(pos, len)
返回值: string,包含s中从pos开始的len个字符的拷贝。pos的默认值是0,len的默认值是s.size() - pos,即不加参数会默认拷贝整个s。
异常 :若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾
C++ 中substr函数有三种用法,如下所示:
假设string s(“student12”);
string x=s.substr() //默认时的长度为从开始位置到尾
string y=s.substr(5) //获得字符串s中 从第5位开始到尾的字符串
string z=s.substr(5,3); //获得字符串s中 从第5位开始的长度为3的字符串
3 substr(string ,pos,len)
sql中substr()函数
substr(string ,pos,len)
string:指定字符串
pos:规定字符串从何处开始,(这里的第一个位置是1而不是0)为正数时则从字段开始出开始,为负数则从结尾出开始。
len:要截取字符串的长度。(是从1开始计数而不是0)
//从pos开始的位置,一直截取到最后。
SBUSTR(str,pos);
//从pos开始的位置,截取len个字符(空白也算字符)。
SUBSTR(string ,pos,len);
注:
1.string - 指定的要截取的字符串。
2.pos- 必需,规定在字符串的何处开始。
3.正数 - 在字符串的指定位置开始
4.负数 - 在从字符串结尾的指定位置开始
5.如果pos为1(而不是0),表示从第一个位置开始。
6.length - 指定要截取的字符串长度
数据库的substr函数用法:
1、SUBSTR(str,pos,len): 从pos开始的位置,截取len个字符
substr(string ,1,3) :取string左边第1位置起,3字长的字符串。
所以结果为: str
substr(string, -1,3):取string右边第1位置起,3字长的字符串。显然右边第一位置起往右不够3字长。
结果只能是: g
substr(string, -3,3):取string右边第3位置起,3字长的字符串。
结果为: ing
2、SUBSTR(str,pos): pos开始的位置,一直截取到最后
substr(string ,4) : 从右第4位置截取到最后
结果是: ing