Esta resposta está obsoleta. MySql tem melhor suporte a regex.
Não, é triste dizer que o MySQL não tem como aplicar um regex ao conteúdo de uma coluna em uma cláusula SELECT, apenas uma cláusula WHERE.
Mas você pode usar funções de manipulação de string comuns (não regex) para fazer isso. Se a coluna que contém sua string de parâmetro separada por "e" comercial tiver o nome
url
, você pode obter o número de id com esta expressão de string fina, que encontra seu número de id. CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Então, se você quiser uma lista de
id
valores do url
colunas de table1
, você pode usar este SELECT
consulta. SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Como você pode ver, isso usa a função de pesquisa regexp para localizar as linhas apropriadas.
Não há nada de rápido nisso. A correspondência Regexp não pode explorar um índice MySQL. Se você tiver a opção de carregar sua tabela com a coluna id pré-extraída, será muito melhor pesquisar quando sua tabela ficar grande.