我有一张桌子,其中一列包含iFrame&的html在其中的外部视频,特别是像
<iframe src="http://host.com/videos/ID" otherattributes...></iframe>.
我需要更新当前列或创建一个新列(无关紧要)所以我所拥有的只是该视频的ID,我知道我可以使用正则表达式,但我真的很弱。 也许这样它就会找到字面字符内的内容:[videos /]和即将出现的ID [ID],但我不确定如何。
答案 0 :(得分:0)
这应该有效,假设文本videos/
没有出现在html中的任何其他地方。
update htmltable
set id = SUBSTRING(SUBSTRING(html,
CHARINDEX('videos/', html) + 7,
LEN(html)
),
0,
CHARINDEX('"', SUBSTRING(html,
CHARINDEX('videos/', html) + 7,
LEN(html)
)
)
)
这会更新表otherfield
中名为htmltable
的字段,其中网址中的ID为“123”。这是非常难看的代码,但SQL Server的字符串函数有限。
如果您对表结构有任何控制权,我建议您进行一些更改。视频ID应存储在自己的列中,与网址的其余部分分开。然后,当您需要检索网址时,您将连接这两个部分以获取整个网址。那将更加可维护。
答案 1 :(得分:0)
您可以使用CHARINDEX()功能:
update T SET
VideoID=SUBSTRING(descr,
charindex('/videos/',descr)+LEN('/videos/'),
charindex('"',descr,charindex('/videos/',descr)+LEN('/videos/'))
-(charindex('/videos/',descr)+LEN('/videos/')))