字符串截取(SQL,java)

本文详细介绍了在SQL Server、MySQL、Oracle数据库以及Java编程中,如何进行字符串截取和查找。包括LEFT、RIGHT、SUBSTRING、CHARINDEX、SUBSTRING_INDEX以及Java的split和substring等函数的用法和示例。

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

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值