用于从嵌入代码中获取youtube id的SQL查询

时间:2018-02-20 11:56:58

标签: mysql sql database youtube

我有很多像这样的视频数据:

public ProductsModel : PageModel
{
    ...

   public Task OnGetDetails(int id)
    {
    ...
    }

    public Task OnGetListOfAccessories(int id)
    {
       ...
    }

   ...
}

我想从这组信息中选择并导出ID,因为新网站除了id之外。所以我应该以某种方式抓住v /和?之间的部分。我怎样才能在SQL查询中执行此操作?

2 个答案:

答案 0 :(得分:0)

你无法用纯MySQL做到这一点。 REGEXP仅作为过滤器使用,因此返回0或1,而不提供对捕获组的访问。

解决方案包括自定义函数或使用不同的DBMS,只要您想在SQL中严格执行即可。 How to do a regular expression replace in MySQL?

如果您可以使用任何类型的脚本或编译语言,例如



'<object width="560" height="315"><param name="movie"  value="http://www.youtube.com/v/2rwPGGdB1_4?version=3&hl=uk_UA&rel=0"> </param><param name="allowFullScreen" value="true"></param><param  name="allowscriptaccess" value="always"></param><embed  src="http://www.youtube.com/v/2rwPGGdB1_4?version=3&hl=uk_UA&rel=0"  type="application/x-shockwave-flash" width="560" height="315"  allowscriptaccess="always" allowfullscreen="true"></embed></object>'.match(/youtube\.com\/v\/([^?]+)?/);
&#13;
&#13;
&#13;

应该这样做,如果PCRE兼容,将返回第二个捕获组中的视频ID。

答案 1 :(得分:0)

我在MySql中找到了一种解决方案。首先,我发现'/ v /'的索引为SELECT exvid_code, LOCATE('/v/', exvid_code), LOCATE('?', exvid_code) FROM exvid

之后,我已经完成了子串来获取id:

SELECT SUBSTRING(exvid_code, 83,10) AS id FROM `exvid`