在SQL中提取字符串的一部分

在SQL中提取字符串的一部分,sql,sql-server-2008-r2,extract,Sql,Sql Server 2008 R2,Extract,在SQLServer2008R2中,我需要从字符串中提取字符50和60之间的所有内容。 我在互联网上搜索了一个类似的函数,但没有找到能够解决这个问题的东西 我可以在Excel上使用如下公式进行操作:MID(A2,50,10)sql函数称为substring substring(fieldname,50,10) sql函数称为substring substring(fieldname,50,10) 如果您需要更大的灵活性,例如,如果每次使用CHARINDEX时分离不会发生在同一个位置。

在SQLServer2008R2中,我需要从字符串中提取字符50和60之间的所有内容。 我在互联网上搜索了一个类似的函数,但没有找到能够解决这个问题的东西


我可以在Excel上使用如下公式进行操作:
MID(A2,50,10)
sql函数称为substring

  substring(fieldname,50,10)

sql函数称为substring

  substring(fieldname,50,10)

如果您需要更大的灵活性,例如,如果每次使用CHARINDEX时分离不会发生在同一个位置。这里有几个例子

REVERSE(LEFT(REVERSE(fieldname),CHARINDEX(' ',REVERSE(fieldname))))
如果字符串为“AA 1235 A9”,则输出为A9

REPLACE(STUFF(fieldname,1,CHARINDEX('- ',fieldname),''),REVERSE(LEFT(REVERSE(fieldname),CHARINDEX(' ',REVERSE(fieldname)))),'')

在第一位代码的基础上,还可以拉取中间部分,这将导致1235。“”是灵活的,如果需要使用连字符、星号或其他符号/标识符,则只需使用该符号/标识符,而不使用空格。

如果需要更大的灵活性,例如,如果每次使用CHARINDEX时,分隔不在同一位置发生,则可以使用该符号/标识符。

。这里有几个例子

REVERSE(LEFT(REVERSE(fieldname),CHARINDEX(' ',REVERSE(fieldname))))
如果字符串为“AA 1235 A9”,则输出为A9

REPLACE(STUFF(fieldname,1,CHARINDEX('- ',fieldname),''),REVERSE(LEFT(REVERSE(fieldname),CHARINDEX(' ',REVERSE(fieldname)))),'')
在第一位代码的基础上,还可以拉取中间部分,这将导致1235。“”是灵活的,如果需要使用连字符、星号或其他符号/标识符,则只需使用该符号/标识符而不是空格。

SubString()-SubString()-