web-dev-qa-db-ja.com

2つのストリング間のMySQLサブストリング

列フィールドの問題を解決するために手が必要です。たとえば、これら2つの異なる文字列の「パターン」の間にある文字列を抽出する必要があります。

[... string] contract = 1234567890123350566076070666発行= [string ...]

「contract =」と「issued =」の間の文字列を抽出したい

現在、私は使用しています

SELECT substring(substring_index(licence_key,'contract=',-1),1,40) FROM table

問題は、間にあるこの文字列が常に40文字であるとは限らないため、固定長ではないため、その前後に来るデータにあるということです。揮発性のデータです。

どうやってそれを処理できるか知っていますか?

19
Haohmaru

substring_index()を2回使用するだけです。

SELECT substring_index(substring_index(licence_key, 'contract=', -1),
                       'issued=', 1)
FROM table;
41
Gordon Linoff

この文字列が一致しない場合、合計結果を提供します。

置き換えたい場合は、次のように使用できます。

UPDATE questions set question= REPLACE(question, '<xml></xml>', '') WHERE question like '%<xml>%';

UPDATE questions set question= REPLACE(question, substring_index(substring_index(question, '<xml>', -1), '</xml>', 1), '') WHERE question like '%<xml>%';
0
Gajanand Pandey