我的字符串具有类似JSON的格式,包括:
..."id":"500", ..., "id":"600", ...
我需要解析列中的第二个 id
。我使用substring_index
找到了很多答案,但是,我需要在第二个(可能是n个)出现之后得到字符串,而不是在之前解析字符串出了身份证。
有一个很好的解决方案吗?
答案 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`