如果我想通过仅拉出另一列的子串的一部分来更新列。
我想要做的是从文件中提取jpg的名称,例如我希望imageName等于great-family.jpg“一个varchar字符串。但是图像名称都不同。
update tblPetTips
set imageName = "great-family.jpg"
where articleText = "<img src="/images/imgs/great-family.jpg" alt="A Great Family Dog">"
在这种情况下,我想说
update tblPetTips
set imageName = "yellow-smile.jpg"
where articleText = "<img src="/images/imgs/yellow-smile.jpg" alt="A Yellow Smiley Face">"
如何(没有硬编码)从articleText列更新imageName。 所有目录都是相同的 - 所有图像都存在于images / imgs中。
答案 0 :(得分:0)
您可以尝试使用SUBSTRING_INDEX函数获取最后/
和"
之间的值:
UPDATE tblPetTips
SET imageName = SUBSTRING_INDEX(SUBSTRING_INDEX(articleText, '/', -1), '"', 1);
仅当<img srs=... >
html的格式一致时才会起作用。
答案 1 :(得分:0)
如果您的图片来源始终是/ images / imgs /,您可以使用patindex查找'/ images / imgs /'和'“alt'的位置,然后在它们之间提取文本。 检查是否有效:
substring(articletext,
patindex('/images/imgs/', articletext) + length('/images/imgs/'),
patindex('" alt') - (patindex('/images/imgs/', articletext) + length('/images/imgs/')))
如果您的图片可以有任何网址,那么使用正则表达式是可行的,但我不认为sqlserver直接提供正则表达式。 在这种情况下,您可以编写一个函数来提取URL的文件名部分并在更新中调用它。