Selecionando parte de um campo com um regex

Eu tenho uma tabela onde um componente de terceiros armazena urls, eu gostaria de obter apenas oid parâmetro deste URL.

Com o PHP eu posso fazer assim:

$subject = "index.php?option=com_content&catid=2&id=456&view=article"; //mysql query result
$pattern = '*[&?]id=([0-9]+)*'; //matches either ?id=456 or &id=456
preg_match($pattern, $subject, $matches);
echo $matches[1];//prints 456

O número correspondido faria parte de uma nova consulta:

SELECT name FROM table1 WHERE id=the_match

Agora, eu acho que seria muito mais rápido fazer isso diretamente via mysql, algo como

SELECT name FROM table1 WHERE id = (SELECT REGEX_MATCH('*[&?]id=([0-9]+)*', '$1') FROM table2 WHERE uniquefield1 = 'fred')

ObviamenteSELECT REGEX_MATCH('*[&?]id=([0-9]+)*', '$1') FROM table2 WHERE uniquefield1 = 'fred') é completamente inventado, apenas para dizer que eu quero selecionar o primeiro grupo de correspondência de regex e usá-lo para fazer oWHERE cláusula de trabalho.

É possível fazer algo assim com o MySQL?

questionAnswers(2)

yourAnswerToTheQuestion