MySQL子串在两个不同的字符串之间,第二个针在第一个之后

时间:2016-10-28 15:14:37

标签: 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  |
+----+---------------------+------------------------+

我想从data字符到AF的下一次出现之间抓取!!列中的字符串所以理想情况下,查询SELECT id ,[something] AS x FROM tbl会结果是:

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

关于如何做到这一点的想法?我认为所有其他问题都没有关系,因为他们不会在第一针(!!)之后找到第一次出现第二针(AF)。

1 个答案:

答案 0 :(得分:1)

可能有更快的方法来做到这一点,但这是一个良好的开端:

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