如何 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)
我的初始字符串是
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)