SQL截取两个特定值之间的文字

2025-03-06 16:24:46
推荐回答(2个)
回答1:

  sql截取 两个特定值之间的文字
  可以使用substring() 截取 和 charindex()
  CHARINDEX函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。

  substring函数调用方法如下:
  substring(string,startNumber, endNumber)

  返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。
  例子:
  CHARINDEX('SQL', 'Microsoft SQL Server')
这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。

  SubString("12345",2,3)
  调用以下函数返回“2345”:
  假设你要显示Northwind数据库Customer表前5行联系人列的Last Name。这是前5行数据
ContactName
------------------------------
Maria Anders
Ana Trujillo
Antonio Moreno
Thomas Hardy
Christina Berglund
你可以看到,CustomName包含客户的First Name和Last Name,它们之间被一个空格隔开。我用CHARINDX函数确定两个名字中间空格的位置。通过这个方法,我们可以分析ContactName列的空格位置,这样我们可以只显示这个列的last name部分。这是显示Northwind的Customer表前5行last name的记录!
select top 5 substring(ContactName,charindex(’ ’,ContactName)+1 ,
len(ContactName)) as [Last Name] from Northwind.dbo.customers
下面是这个命令输出的结果。
Last Name
------------------------------
Anders
Trujillo
Moreno
Hardy
Berglund

回答2:

你如果只要指定字符之间的,那么直接截取就行了啊
sqlserver:
select substring(t,charindex('3',t)+1,charindex('5',t)-charindex('3',t)-1)