Mysql-获取文本字符串的一部分
我一直在看Stackoverflow中的示例,但没有一个有效。 事实证明,给我的表中没有包含包含视频“ID”的列。 因此,我需要从一个名为“嵌入”的列中获取这些“id”,该列包含一个“iframe”,其中url是每个视频的“id”。 我知道用PHP我可以做一个正则表达式并得到那个值,但我需要从Mysql得到这个值,以便与另一个包含那个些“ID”的表进行比较 “嵌入”列包含以下类型的值:Mysql-获取文本字符串的一部分,mysql,string,function,split,substring,Mysql,String,Function,Split,Substring,我一直在看Stackoverflow中的示例,但没有一个有效。 事实证明,给我的表中没有包含包含视频“ID”的列。 因此,我需要从一个名为“嵌入”的列中获取这些“id”,该列包含一个“iframe”,其中url是每个视频的“id”。 我知道用PHP我可以做一个正则表达式并得到那个值,但我需要从Mysql得到这个值,以便与另一个包含那个些“ID”的表进行比较 “嵌入”列包含以下类型的值: <iframe src="https://www.example.com/embed/9526128"
<iframe src="https://www.example.com/embed/9526128" frameborder="0" height="481" width="608" scrolling="no"></iframe>
<iframe src="https://www.example.com/embed/ph193842d54b87g" frameborder="0" height="481" width="608" scrolling="no"></iframe>
我一直在用“substring”函数进行测试,但作为长度可变的“id”给我带来了问题
新增查询:
SUBSTRING_INDEX(embed, '/', -2)
好的,我已经为我的问题找到了一个解决方案,我不知道它是否是理想的,但它是:
SUBSTRING_INDEX(SUBSTRING_INDEX(embed, '/', -2), '"', 1)
其中“嵌入”是“iFrame”所在的列。我找到了另一个解决方案,它适用于id位于
'embed'
word之后的任何url。而您的解决方案仅在字符串右侧第二次出现'/'
后id开始时有效
请尝试一下:
select @len:= instr(embed,'embed') from yourTablname;
SELECT Substring(embed,
@len+6,
locate('"',
embed,
@len
)-(@len+6)
) as id
From youTablname;
希望有帮助 请添加到目前为止您尝试过的查询。完成查询添加是否嵌入列包含从iframe开始的整个url作为字符串?是吗?是的,是的。。让我试试看
select @len:= instr(embed,'embed') from yourTablname;
SELECT Substring(embed,
@len+6,
locate('"',
embed,
@len
)-(@len+6)
) as id
From youTablname;