2017-10-18 71 views
-1

我一直在看Stackoverflow中的例子,但都没有工作。 事实证明,我所提供的表格不包含带有视频“ID”的列。 所以我需要从一个名为“嵌入”的列中获取这些“ID”,其中包含一个“iframe”,其URL是每个视频的“ID”。 我知道,用PHP我可以做一个正则表达式并获得该值,但我需要从Mysql中获得此值,以便与包含这些“ID”的另一个表进行比较。Mysql - 获取文本字符串的一部分

“嵌入”一栏包含类型的值:

<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> 

与“IDS”你应该得到的将是以下(分别):

9526128 
ph193842d54b87g 

我已经与测试“子串”功能,但作为“ids”长度可变,一直给我带来问题...

添加的查询:

SUBSTRING_INDEX(embed, '/', -2) 
+0

请添加您到目前为止尝试过的查询。 –

+0

完成查询添加 – Kokox

+0

所以嵌入列包含从iframe作为字符串开始的整个网址?这样对吗? –

回答

1

好吧,我已经找到了我的问题的解决方案,我不知道这是否是理想的,但它是:

SUBSTRING_INDEX(SUBSTRING_INDEX(embed, '/', -2), '"', 1) 

其中“嵌入”是这里的“I帧”是列位于。

0

我发现了另一个解决方案,它将工作于任何 url,其中id在'embed'之后。虽然你的解决方案只适用于从字符串右侧第二次出现'/'后id开始。

请尝试一下:

select @len:= instr(embed,'embed') from yourTablname; 

SELECT Substring(embed, 
       @len+6, 
       locate('"', 
         embed, 
         @len 
         )-(@len+6) 
       ) as id 
From youTablname; 

Click here for Demo

希望它能帮助!

+0

你试过上面的查询吗? –