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?