在字符串中*第n次出现之后找到所有内容*

时间:2016-10-28 13:11:10

标签: mysql

我的字符串具有类似JSON的格式,包括:

..."id":"500", ..., "id":"600", ...

我需要解析列中的第二个 id。我使用substring_index找到了很多答案,但是,我需要在第二个(可能是n个)出现之后得到字符串,而不是在之前解析字符串出了身份证。

有一个很好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

现在我有:

SELECT substring_index(
         substr(col, locate('"id":"', col, locate('"id":"', col) + 6) + 6),
         '"',
         1)
FROM table

很想看到一个“更好”的答案: - )

答案 1 :(得分:0)

查找第n个列之后出现的“ some_column”列的子字符串 目标字符串的出现

SELECT 
  SUBSTRING(some_column, CHAR_LENGTH(SUBSTRING_INDEX(some_column, <target_string>, <n>)) + <length of target string + 1>)
FROM some_table
-- or if you want to limit the length of your returned substring...
SELECT 
  SUBSTRING(some_column, CHAR_LENGTH(SUBSTRING_INDEX(some_column, <target_string>, <n>)) + <length of target string + 1>, <desired length>)
FROM some_table

对于此问题,表单为:

SELECT 
  SUBSTRING(col, CHAR_LENGTH(SUBSTRING_INDEX(col, '"id":"', 2)) + 7)
FROM `table`