Този отговор е остарял. MySql има по-добра поддръжка на регулярни изрази.
Не, за съжаление MySQL няма начин да приложи регулярен израз към съдържанието на колона в клауза SELECT, а само клауза WHERE.
Но можете да използвате обикновени (нерегулярни) функции за манипулиране на низове, за да направите това. Ако колоната, съдържаща вашия разделен с амперсанд низ от параметри, е наречена url
, можете да получите идентификационния номер с този фин низов израз, който намира вашия идентификационен номер.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
Така че, ако искате списък с id
стойности от url
колони на table1
, можете да използвате този SELECT
заявка.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
Както можете да видите, това използва функцията за търсене на regexp за намиране на подходящите редове.
В това няма нищо бързо. Съвпадението на регулярен израз не може да използва MySQL индекс. Ако имате избор да заредите таблицата си с предварително извлечена колона с id, ще бъде много по-добре да търсите, когато таблицата ви стане голяма.