Seleccionando parte de un campo con una expresión regular
Tengo una tabla donde un componente de terceros almacena las URL, me gustaría obtener solo elid
parámetro de esta url.
Con PHP puedo hacerlo así:
$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
El número coincidente sería parte de una nueva consulta:
SELECT name FROM table1 WHERE id=the_match
Ahora, creo que sería mucho más rápido hacerlo directamente a través de mysql, algo así 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')
está completamente inventado, solo para decir que quiero seleccionar el primer grupo que coincida con expresiones regulares y usarlo para hacer elWHERE
cláusula de trabajo.
¿Es posible hacer algo como esto con MySQL?