目录
前端 js/ Java/ MySQL/Oracle 截取字符串总结:
环境 | 方法 | 说明 |
---|---|---|
前端 js | substr(from, length) | substr(起始位置,字符数) |
substring(start, end) | substring(起始位置, 结束位置) | |
后端 java | substring(beginIndex) | substring(起始位置) |
substring(beginIndex, endIndex) | substring(起始位置, 结束位置) | |
MySQL | SUBSTR(str, pos, len) | SUBSTR(字符串/字段名, 起始位置, 长度/结束位置) |
SUBSTRING(str, pos, len) | SUBSTRING(字符串/字段名, 起始位置, 长度/结束位置) | |
MySQL: 获取字符串指定分隔符之前或之后的子字符串 | SUBSTRING_INDEX(str,delim,count) | SUBSTRING_INDEX(字符串/字段名, 分隔符, 返回的子字符串的个数) |
Oracle | SUBSTR(ch, pos, length) | SUBSTR(字符串/字段名, 起始位置, 长度/结束位置) |
注意:MySQL、Oracle 是从 1 开始计数,其他从 0 开始计数。
1、前端 js 的截取字符串方法:substr、substring
idea 前端的截取字符串方法显示:
substr(from,length):起始位置,返回的字符数
详细说明:substr(from: number, length?: number)
参考如下:
var str = "Hello, world!";
var result = str.substr(7, 5); // 返回 "world"
var result1 = str.substr(7, 12); // 返回 "world!"
注意:起始位置 到 字符串末尾 的长度 < 字符数,直接截取到字符串末尾
substring(start,end): 起始位置,结束位置
详细说明:substring(start: number, end?: number)
参考如下:
var str = "Hello, world!";
var result = str.substring(7, 12); // 返回 "world"
var result1 = str.substring(12, 7); // 返回 "world"
注意:结束位置 < 起始位置, substring 方法会自动交换这两个参数
总结:substr 和 substring 的区别是第二个参数,如果第二个参数为空,则都返回:起始位置到字符串末尾。起始位置从0开始。
2、Java 中 截取字符串方法:substring
idea 的后端Java 截取字符串方法显示:
substring(beginIndex) : 起始位置
没有结束位置,则截取 起始位置到字符串末尾。
substring(beginIndex, endIndex) : 起始位置,结束位置
有结束位置,则截取 起始位置到结束位置。
参考如下:
String value = "Hello, world!";
String value1 = value.substring(7); // 返回 "world!"
String value2 = value.substring(7,12); // 返回 "world"
注意事项:结束位置 不能小于 起始位置,否则会报错。起始位置从0开始。
3、MySQL 的截取字符串方法:SUBSTR、SUBSTRING、SUBSTRING_INDEX
MySQL的详细截取字符串SUBSTR、SUBSTRING、SUBSTRING_INDEX 如下:
在 MySQL 中截取字符串SUBSTR 和 SUBSTRING 方法效果是一样的。
SUBSTR(str, pos, len)、SUBSTRING(str, pos, len)
str : 字段名/字符串,
pos : 起始位置,
len : 长度/结束位置,pos<len,则是 结束位置;pos>=len,则是 长度。
参考如下:
-- REMARK 是 "Hello, world!"
select *,SUBSTR(REMARK,7) from test1; -- 返回 ' world!'
select *,SUBSTR(REMARK,7,5) from test1; -- 返回 ' worl'
select *,SUBSTR(REMARK,7,12) from test1; -- 返回 ' world!'
select *,SUBSTRING(REMARK,7) from test1; -- 返回 ' world!'
select *,SUBSTRING(REMARK,7,5) from test1; -- 返回 ' worl'
select *,SUBSTRING(REMARK,7,12) from test1; -- 返回 ' world!'
注意事项:MySQL 中字符串的索引起始位置是从 1 开始的,而不是从 0 开始。如果设置为0,截取的字符串返回会是空的。
MySQL 的 SUBSTRING_INDEX :获取字符串指定分隔符之前或之后的子字符串
SUBSTRING_INDEX(str,delim,count)
str : 字段名/字符串,
delim : 分隔符,
count : 返回的子字符串的个数
SUBSTRING_INDEX 会从 str 中根据 delim 进行分割,然后返回分割后的子字符串。
如果 count 为正数,则返回从字符串开头到第 count 个分隔符之间的子字符串;
如果 count 为负数,则返回从字符串末尾到倒数第 count 个分隔符之间的子字符串。
参考如下:
-- REMARK 是 'Hello, world!'
select *,SUBSTRING_INDEX(REMARK,',',1) from test1; -- 返回 'Hello'
select *,SUBSTRING_INDEX(REMARK,',',-1) from test1; -- 返回 ' world!'
-- str 是 'apple,banana,orange,grape'
SELECT SUBSTRING_INDEX(str, ',', 1) from test1; -- 返回 'apple'
SELECT SUBSTRING_INDEX(str, ',', -2) from test1; -- 返回 'orange,grape'
4、Oracle 的截取字符串方法:SUBSTR
Oracle 的 截取字符串方法如下:
Oracle 的 截取字符串方法只有 SUBSTR(ch, pos, length)
ch : 字段名/字符串,
pos : 起始位置,
length : 长度/结束位置,pos<length,则是 结束位置;pos>=length,则是 长度。
参考如下:
-- REMARK 是 'Hello, world!'
SELECT t.*,SUBSTR(t.REMARK,7) FROM TEST1 t; -- 返回 ' world!'
SELECT t.*,SUBSTR(t.REMARK,7,5) FROM TEST1 t; -- 返回 ' worl'
SELECT t.*,SUBSTR(t.REMARK,7,12) FROM TEST1 t; -- 返回 ' world!'
-- 注意:直接在 SELECT 语句中使用 * 来选择所有列,然后再加上 SUBSTR 函数是不被允许的,所以加了t。
注意事项:起始位置是从 1 开始计数的,而不是从 0 开始计数的。
因此,如果你想截取字符串的前几个字符,起始位置应该是 1,而不是 0。
如果,设置起始位置为0,他也会从 1 开始计数,不会像 MySQL 那样直接返回空。