mysql - 定位字符串中第 n 次出现*之后*的所有内容

标签 mysql

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

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

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

有什么好的解决办法吗?

最佳答案

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

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`

关于mysql - 定位字符串中第 n 次出现*之后*的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305851/

相关文章:

php - 如何从 Angular SQL 中删除字符 -

asp.net - 来自 ASP.NET 2 的 MySQL 存储过程调用抛出 Use Procedure bodies 异常

mysql - 将大量 MySQL 转储文件转换为 CSV

javascript - sails.js:mysql 连接失败 ReferenceError: localMysql 未定义

mysql - 如何将 MySQL 客户端与运行在 Docker 中的服务器连接

mysql - 高效的 MySQL 搜索

java - 在处理遗留数据库时,Hibernate 会因丢失的行而窒息

php - Laravel 5.1 Eloquent 插入到寄存器上的另一个表中

Php + Mysql + 多上传图片文件

mysql - 如何选择SQL查询结果的特定部分?