この回答は廃止されました。 MySqlはより良い正規表現サポートを持っています。
いいえ、残念ながら、MySQLにはSELECT句の列のコンテンツに正規表現を適用する方法がなく、WHERE句のみが適用されます。
ただし、これを行うには、通常の(正規表現以外の)文字列操作関数を使用できます。アンパサンドで区切られたパラメータ文字列を含む列の名前がurl
の場合 、ID番号を見つけるこの細かい文字列式を使用して、ID番号を取得できます。
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]+'
ご覧のとおり、これは正規表現検索機能を使用して適切な行を検索します。
これについては何も速いことはありません。正規表現のマッチングでは、MySQLインデックスを利用できません。事前に抽出されたid列を使用してテーブルをロードすることを選択できる場合は、テーブルが大きくなったときに検索する方がはるかに優れています。