2016-10-28 2 views
0

MySQL 열에서 특정 데이터를 추출해야합니다. 표는 그래서 다음과 같습니다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!!의 NEXT 발생 사이의 열 data에서 문자열을 잡아하려는에서 :

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

이 작업을 수행하는 방법에 대한 생각? 첫 번째 바늘 (AF) 이후 두 번째 바늘 (!!)이 처음 발견되는 것을 처리하지 않으므로 내가 보는 다른 모든 질문은 관련이 없습니다.

+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') 이후에 두 번째 바늘 ('==')이 처음 발견되는 것이 문제입니다. – Bing

+0

감사합니다. 회의 전에 신속하게 질문에 대답해서는 안됩니다. :) –

관련 문제