1. INSTR() 返回要截取的字符串在源字符串中的位置
- instr(源字符串,要查找的字符串 , start哪个位置开始查找,查找第几次出现的)
默认从位置1开始查找,默认查找第1次出现的;
如果start为负数,则表示从右往左查找,但是查找结果仍是从左往右计算后的结果。
instr('sadhuqad','a',1,1)
注: 也可用于搜索源字符串中是否包含某个特定字符:
当instr() > 0,表示某个字段含有某个字符串;当instr() = 0,表示没有某个字符串
2. SUBSTR(),LEFT(),RIGHT() 截取字符串
- substr(str, start, length)
其中,str是源字符串(下同),start是开始截取的位置,length是要截取的长度。
start为0或1时,都是指从字符串的第1个字符开始截取,这个需要注意! 当start为负数时,表示截取的开始位置为字符串右端向左数第start个字符。
substr('Hello World',0,1) //返回结果为 "H"
substr('Hello World',1,1) //返回结果为 "H"
substr('Hello World',2,4) //返回结果为 "ello"
substr('Hello World',-3,3) //返回结果为 "rld"
substr('Hello World',5,3) //返回结果:"o W" (中间的空格也算一个字符串)
- left(str, length) 从左向右截取
其中,length是截取字符长度
- right(str, length) 从右向左截取
其中,length是截取字符长度
注:oracle仅支持substr()函数,sql sever支持上述所有三种
3. LPAD()字符串左填充, RPAD() 字符串右填充
- lpad(str, length, padstr) 返回字符串str,将其左侧填充字符串padstr至length个字符的长度。 如果str大于length,则返回值缩短为length个字符。
其中,str是源字符串,length是填充后的字符串长度,padstr是要填充的字符串。
- rpad(str, length, padstr) 返回字符串str,将其右侧填充字符串padstr至length个字符的长度。 如果str大于length,则返回值缩短为length个字符。
4. LENGTH() 获取字符长度,LENGTHB()获取字节长度
length('abc') = 3. lengthb('abc') = 3.
length(‘张三’) = 2. lengthb('张三') = 4或者6*
*这里是因为在不同数据库中,因字符集不同导致编码不同,1个汉字可能占2个(ZHS16GBK)或者3个字节(AL32UTF8)。
可以使用 length()<>lengthb() 来判断字符中是否含有中文。
注: sql server中是LEN()计算长度