mySQL
1、left(name,4)截取左边的4个字符
eg:SELECT LEFT(201909,4)
结果:2019
2、right(name,2)截取右边的2个字符
eg:SELECT RIGHT(201909,2)
结果:09
3、SUBSTRING(name,4,2) 截取name这个字段 从第4个字符开始 只截取之后的3个字符(索引值从1开始)
SELECT SUBSTRING('广东省广州市',4,2)
结果:广州
4、SUBSTRING(name,4) 截取name这个字段 从第4个字符开始,之后的所有个字符
SELECT SUBSTRING('广东省广州市',4)
结果:广州市
5、SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束
SELECT SUBSTRING('广东省广州市',-4)
结果:省广州市
6、SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符
SELECT SUBSTRING('广东省广州市',-4,2)
结果:省广
注意:我们注意到在函数 substring(str,pos, length)中, pos 可以是负值,但 length不能取负值。
7、substring_index('www.baidu.com', '.', 2) 截取第二个 '.' 之前的所有字符
SELECT substring_index('www.baidu.com', '.', 2)
结果:baidu.com
8、substring_index('www.baidu.com', '.', -2) 截取第二个 '.' (倒数)之后的所有字符
SELECT substring_index('www.baidu.com', '.', -2)
结果:baidu.com
9、如果关键字不存在,则返回整个字符串
SELECT substring_index('www.baidu.com', 'ghn', 1)
结果:www.baidu.com
SQLServer
1、LEFT ( character_expression , integer_expression )
函数说明:LEFT ( '源字符串' , '要截取最左边的字符数' )
select LEFT('abcdefg',3);
结果:abc
2、RIGHT ( character_expression , integer_expression )
函数说明:RIGHT ( '源字符串' , '要截取最右边的字符数' ),返回字符串中从右边开始指定个数的 integer_expression 字符
select RIGHT('abcdefg',3);
结果:efg
3、SUBSTRING ( expression , start , length ) 【start 与length都是必须输入的(索引值从1开始)】
函数说明:SUBSTRING ( '源字符串' , '截取起始位置(含该位置上的字符)' , '截取长度' ),返回字符、expression 表达式的一部分
select SUBSTRING('abcdefg',3 ,4); //意思:从第三位开始截取,截取4位
结果:cdef
如果start的索引是从小于1(0或负数)开始,则返回长度等于从1开始,截取长度为 length - ((start - 1)的绝对值), 如果这个差为负数就返回空。
eg:下面的 || 表示绝对值计算
select SUBSTRING('abcde',0,2) 返回结果为 a , 计算公式为SUBSTRING(1,2-|2-1|)
select SUBSTRING('abcde',0,-1) 返回错误提示“传递到 substring 函数的长度参数无效”
select SUBSTRING('abcde',-1,2) 返回结果为空, 计算公式为SUBSTRING(1,2-|-1-1|)
select SUBSTRING('abcde',-5,3) 返回结果为空, 计算公式为SUBSTRING(1,3-|-5-1|)
select SUBSTRING('abcde',-1,4) 返回结果为ab, 计算公式为SUBSTRING(1,4-|-1-1|)
select SUBSTRING('abcde',-2,8) 返回结果为abcde, 计算公式为SUBSTRING(1,8-|-2-1|)
4、CHARINDEX(expression1, expression2 [,start_location])
函数说明:CHARINDEX 查询字符串所在的位置,expression1 为子字符串,expression2 为父字符串,start_location 表示开始位置。
select CHARINDEX('d', 'abcdef', 0);
结果:4
Oracle
substr 函数
语法:SUBSTR(string,start, [length])
string:表示源字符串,即要截取的字符串。
start:开始位置,从1开始查找。如果start是负数,则从string字符串末尾开始算起。
length:可选项,表示截取字符串长度。
eg:
SELECT SUBSTR('Hello SQL!', 1) FROM dual --截取所有字符串,返回'Hello SQL!'
SELECT SUBSTR('Hello SQL!', 2) FROM dual --从第2个字符开始,截取到末尾。返回'ello SQL!'
SELECT SUBSTR('Hello SQL!', -4) FROM dual --从倒数第4个字符开始,截取到末尾。返回'SQL!'
SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual --从第3个字符开始,截取6个字符。返回'llo SQ'
SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual --从倒数第4个字符开始,截取3个字符。返回'SQL'
JAVA中
1、split()
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
1.只传一个参数:split(String regex)
String str = "HelloWorld@qq.com";
String[] strArray = str.split("@");
运行结果:
HelloWorld
qq.com
2.传入两个参数:split(String regex,int limit)
regex -- 正则表达式分隔符。
limit -- 分割的份数。
String str = "HelloWorld@qq@com";
String[] strArray = str.split("@",2);
运行结果:
HelloWorld
qq@com
2、subString()方法
1、只传一个参数:subString(int beginIndex) 将字符串从索引号为beginIndex开始截取,一直到字符串末尾。(注意:索引值从0开始);
String sb = "HelloWorld@qq.com";
String str = sb.substring(5);
运行结果:
World@qq.com
2、传入两个参数:substring(int beginIndex, int endIndex)
从索引号beginIndex开始到索引号endIndex结束(返回结果包含索引为beginIndex的字符不包含索引endIndex的字符),如下所示:
String sb = "HelloWorld@qq.com";
String str = sb.substring(0, 5);
运行结果:
Hello
3、与indexOf()一起使用
indexOf(String str)方法返回的是子字符串第一次出现在字符串的索引位置,如下所示:
String sb = "HelloWorld@qq.com";
String str = sb.substring(0, sb.indexOf("@"));
运行结果:
HelloWorld
本文详细介绍了在SQL Server、MySQL、Oracle数据库以及Java编程中,如何进行字符串截取和查找。包括LEFT、RIGHT、SUBSTRING、CHARINDEX、SUBSTRING_INDEX以及Java的split和substring等函数的用法和示例。
660

被折叠的 条评论
为什么被折叠?



