sql数据库中如何使用right和left组合使用提取字符串中间的某两个字符

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 之间的字符数,两者相减得到子字符串的长度。

  • 这篇博客: SQL如何从字符串截取指定字符(LEFT、MID、RIGHT三大函数)中的 1.LEFT函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • (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。如下表所示。

    student
    IDnamesexnative_placenationbornage
    1001张三广东省2000/3/1622
    1002陈一广东1998/3/1524
    1003王五西藏2002/1/620
    1004陈红广东省2001/1/1721
    1005李四东北省1999/3/1623
    1006-广东省1998/5/624
    1008陈小小广东1997/5/925

    例2:将籍贯中省字去掉,截取前两个字。同时获取学生学号、姓名、性别和年龄。

    select ID,name,sex,left(native_place,2),age
    from student