我有很多像这样的视频数据:
public ProductsModel : PageModel
{
...
public Task OnGetDetails(int id)
{
...
}
public Task OnGetListOfAccessories(int id)
{
...
}
...
}
我想从这组信息中选择并导出ID,因为新网站除了id之外。所以我应该以某种方式抓住v /和?之间的部分。我怎样才能在SQL查询中执行此操作?
答案 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;
应该这样做,如果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`