2017-10-18 61 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

你試過上面的查詢嗎? –