Sql server 如何在SQL中选择两个相同字符之间的字符串

Sql server 如何在SQL中选择两个相同字符之间的字符串,sql-server,substring,charindex,Sql Server,Substring,Charindex,我的初始字符串是 Content-Disposition: attachment; filename="0001.zam" 我想选择两个“字符”(本例中为“0001.zam”)之间的所有内容。我知道我需要使用类似于以下内容的子字符串和CHARINDEX函数: SELECT SUBSTRING(@Attachment, CHARINDEX('"', @Attachment),...) 我不知道传递什么作为第二个子字符串参数。请注意,两个“字符”之间的字符串和第二个“字符”之后的字符串是可变的。

我的初始字符串是

Content-Disposition: attachment; filename="0001.zam"
我想选择两个“字符”(本例中为“0001.zam”)之间的所有内容。我知道我需要使用类似于以下内容的子字符串和CHARINDEX函数:

SELECT SUBSTRING(@Attachment, CHARINDEX('"', @Attachment),...)
我不知道传递什么作为第二个子字符串参数。请注意,两个“字符”之间的字符串和第二个“字符”之后的字符串是可变的。整个字符串可以如下所示:

Content-Disposition: attachment; filename="0001556.txt"; size=187;

底线是获取两个“字符”之间的所有内容。

另一种获取数据的方法是使用
left()
right()
函数

select left(right(t, len(t)- CHARINDEX('"', t)), charindex('"',right(t, len(t)- CHARINDEX('"', t)))-1)
from
(
select 'Content-Disposition: attachment; filename="0001.zam"' t
) u
这个输出

0001.zam


我希望,而不是假设,在这个标题中只有两个“

获取数据的另一种方法是使用
left()
right()
函数

select left(right(t, len(t)- CHARINDEX('"', t)), charindex('"',right(t, len(t)- CHARINDEX('"', t)))-1)
from
(
select 'Content-Disposition: attachment; filename="0001.zam"' t
) u
这个输出

0001.zam


我希望,而不是假设,此标题中只有两个“

子字符串的解决方案,您在开始时尝试过:

SELECT SUBSTRING(@Attachment,
                 CHARINDEX('"', @Attachment)+1,
                 CHARINDEX('"', @Attachment,CHARINDEX('"', @Attachment)+1)-CHARINDEX('"', @Attachment)-1)

带有
子字符串的解决方案,您在开始时尝试过:

SELECT SUBSTRING(@Attachment,
                 CHARINDEX('"', @Attachment)+1,
                 CHARINDEX('"', @Attachment,CHARINDEX('"', @Attachment)+1)-CHARINDEX('"', @Attachment)-1)

非常感谢。是的,整个字符串中只有两个“字符。谢谢。是的,整个字符串中只有两个”字符。