sql数据库中如何使用right和left组合使用提取字符串中间的某两个字符
在 SQL 数据库中,可以使用 SUBSTRING 函数结合 CHARINDEX 函数来提取字符串中间的某两个字符。具体实现如下:
1、使用 CHARINDEX 函数找到字符串中起始字符的位置,例如找到字符串中的 a:
CHARINDEX('a', string)
2、使用 SUBSTRING 函数提取子字符串,例如从字符串中第一个 a 的位置开始提取长度为 n 的子字符串:
SUBSTRING(string, CHARINDEX('a', string), n)
3、如果要提取两个字符之间的子字符串,可以先用 CHARINDEX 找到两个字符的位置,再用 SUBSTRING 函数提取两个字符之间的子字符串。例如,提取字符串 string 中 a 和 b 之间的子字符串:
SUBSTRING(string, CHARINDEX('a', string) + 1, CHARINDEX('b', string) - CHARINDEX('a', string) - 1)
其中,CHARINDEX('a', string) + 1 是 a 的下一个字符位置,CHARINDEX('b', string) - CHARINDEX('a', string) - 1 是 a 和 b 之间的字符数,两者相减得到子字符串的长度。
(1)语法:left(text,len)即left(字符串文本,长度)
查询语句
select [column(s),] left(text,len)
[from table]
参数说明:
text:字符串,可直接引用字符串,也可为字段;
len:截取字符串的长度,为正整数,若为0或负数返回为空值。
说明:查询语句中用“[]”括起来的表示可选。若和其它字段一起查询时需要输入from语句指定目标表,若text为字段时也需要输入from语句指定目标表,若只是用left获取指定某字符串截取时可直接省略from语句,但是这种用法一般只是在调试而不常用于实际当中。
(2)用法:截取左边指定长度字符。
(3)实例
例1:从“hello world”截取“hello”。
select left('hello world',5)
现有一张学生表student,学号id,姓名name,性别sex,籍贯native_place,民族nation,出生日期born,年龄age。如下表所示。
ID | name | sex | native_place | nation | born | age |
1001 | 张三 | 男 | 广东省 | 汉 | 2000/3/16 | 22 |
1002 | 陈一 | 女 | 广东 | 壮 | 1998/3/15 | 24 |
1003 | 王五 | 男 | 西藏 | 藏 | 2002/1/6 | 20 |
1004 | 陈红 | 女 | 广东省 | 黎 | 2001/1/17 | 21 |
1005 | 李四 | 男 | 东北省 | 汉 | 1999/3/16 | 23 |
1006 | - | 女 | 广东省 | 黎 | 1998/5/6 | 24 |
1008 | 陈小小 | 女 | 广东 | 壮 | 1997/5/9 | 25 |
例2:将籍贯中省字去掉,截取前两个字。同时获取学生学号、姓名、性别和年龄。
select ID,name,sex,left(native_place,2),age
from student