2016-10-28 7 views
0

MySQLの列から特定のデータを抽出する必要があります。テーブルには、そのようになっています2番目の針が最初の後に来る2つの異なる文字列の間のMySQLサブリング

+----+---------------------+------------------------+ 
| id |  time   |   data   | 
+----+---------------------+------------------------+ 
| 1 | 2016-10-28 00:12:01 | a Q1!! AF3 !! ext!! z | 
| 2 | 2016-10-28 02:19:02 | z !!3F2 !AF66-2!! !!a | 
| 3 | 2016-10-28 11:35:03 | AF!a !!! pl6 f !!! dd | 
+----+---------------------+------------------------+ 

私は、クエリSELECT ID ,[something] AS x FROM tblがにつながるので、理想的な文字AF!!の次の発生との間のカラムdataから文字列を取得したい:

+----+------+ 
| id | x | 
+----+------+ 
| 1 | 3 | 
| 2 | 66-2 | 
| 3 | !a | 
+----+------+ 

これを行う方法についての考え?最初の針(AF)の後に2番目の針(!!)の最初の出現を見つけることに対処しないので、私が見る他のすべての質問は、かなり関連していません。

+0

。ここでそれらについて読む:http://dev.mysql.com/doc/refman/5.7/en/string-functions.html –

答えて

1

これを行うには、より高速な方法があるかもしれませんが、これは良いスタートです:あなたは `LOCATE()`と `SUBSTRING()`関数の組み合わせでこれを行うことができます

select substring_index(substring_index(data, 'AF', -1), '!!', 1) 
+0

ここでは、最初の針「AF」への参照はありません。最初の針( 'AF')の後に2番目の針(' == ')の最初の出現を見つけることが問題です。 – Bing

+0

ありがとう@Bing。私は会議の前にすぐに質問に答えるべきではありません。 :) –

関連する問題