如何 select SQL 中 2 个相同字符之间的字符串

How to select a string between 2 identical characters in SQL

我的初始字符串是

Content-Disposition: attachment; filename="0001.zam"

我想 select 两个 " 字符之间的所有内容(在本例中为“0001.zam”)。我知道我需要使用类似于以下内容的 SUBSTRING 和 CHARINDEX 函数:

SELECT SUBSTRING(@Attachment, CHARINDEX('"', @Attachment),...)

我不知道要传递什么作为第二个 SUBSTRING 参数。请注意,两个 " 字符之间的字符串和第二个 " 字符之后的字符串是可变的。整个字符串可以看起来例如。像这样:

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

我希望,而不是假设,这个 header 中只有两个 "。

SUBSTRING 的解决方案,您在开始时尝试过:

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