如何在SQL中提取部分列

时间:2014-05-13 12:52:38

标签: sql sql-server

我的SQL表中有以下列:

CAST([content_html] AS XML).query('/root/Physicians/picture/img') AS [Image]

产生这个:

<img alt="Basil Abdeljaber" src="/uploadedImages/svr/physicians/images/Image - Abdelj.JPG?n=2086" />

在SQL中有什么方法可以在src=""之间提取字符串,所以我留下:/uploadedImages/svr/physicians/images/Image - Abdel.JPG?n=2086

2 个答案:

答案 0 :(得分:3)

只需将您的SQL更改为:

CAST([content_html] AS XML).value('(root/Physicians/picture/img/@src)[1]','varchar(255)') AS [Image]

查询/ root / Physicians / picture / img-node的src属性。

答案 1 :(得分:2)

试试这个:

SELECT SUBSTRING([Image], CHARINDEX('src="', [Image]) + 4, (CHARINDEX('"', [Image], CHARINDEX('src="', [Image]) + 5)) - (CHARINDEX('src="', [Image]) + 4))

以下是它的工作原理:SUBSTRING有三个参数:

  • 原始字符串,
  • 从中提取子字符串的起点的索引,以及
  • 子串的长度

因此,在上面的代码中,第一个参数是您的[Image]列。第二个参数使用CHARINDEX来获取子短语src="的索引,然后将4添加到该短语以便跳过该子短语。第三个采用结束引号"的索引减去我们已经找到的src="的索引,它给出了子串的长度。