私は、MySQLが正規表現マッチからキャプチャグループの値を取得することをサポートしていないと言うことができます。私はこの機能を追加するサーバー側拡張(lib_mysqludf_preg)を見つけましたが、私の環境にこの拡張機能をインストールすることはできません。mysqlのregexキャプチャグループをシミュレートする
私は、正規表現マッチの一部をSQLクエリの列としてキャプチャすることをシミュレートする方法を探しています。
私のデータは、以下の(と私は、サーバー上のデータフォーマットを変更することはできません)のようになります。
+-----------------------------+
| Version |
+-----------------------------+
| 1.2.3.4 |
| 10.20.30.40 |
| Obsidian-1.2.3.4 |
| Obsidian-11.21.31.41 |
| custom\Obsidian-11.21.31.41 |
| custom\11.21.31.41 |
+-----------------------------+
私はそれぞれの行から最後の4桁のそれぞれを捕獲するために探しています。数字は常に値の最後の部分で、常にドットで区切られます。私はwhere句で数字を使用できるように列として各桁をキャプチャする機能のいくつかの組み合わせを
.*[[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+$
私が望んでいた結果をされて、次の正規表現は、私がしたいすべての値と一致します私のクエリのバージョン番号を取得することができます。
SELECT
function1(...) as version1,
function2(...) as version2,
function3(...) as version3,
function4(...) as version4
FROM Version
WHERE version1 > 5;
あなたが選択したプログラミング言語でこれを行うだけではどうですか? – Qtax
少なくとも、 'SUBSTRING_INDEX(ver、 '。'、-1)をversion4'として最後の数字を簡単に得ることができます。他のものは、[MySQLs文字列関数](http://dev.mysql.com/doc/refman/5.5/en/string-functions.html)を使いこなすことによって得ることができます。拡張機能をインストールせずにより良い方法があるかどうかわからない。 – Qtax