在字符串中的字符/模式之前和之后获取所有内容

时间:2018-04-10 14:05:24

标签: mysql sql

我有一个列,我想从中提取字符串前后的所有内容。我有以下条目:

[{"model": "test.question", "pk": 123456789, "fields": {"status": "graded"}}] [{"model": "test.question", "pk": 123456789, "fields": {"status": "answered"}}]

我想在" status":{" 之后}}之前提取子字符串

1 个答案:

答案 0 :(得分:0)

SQL的LIKE关键字可让您使用%作为通配符。其余的只是直接文本匹配。所以,你应该可以使用像

这样的东西

WHERE columnName LIKE 'status":{"%}}]

(当然,将columnName替换为您的列。)

但是,如果您在表格中包含结构化数据,则可能需要重新考虑您的选项。 MySQL有一个JSON数据类型(参见https://dev.mysql.com/doc/refman/5.7/en/json.html),可以让你更直接,更正确地查询 - 例如,如果存在包含字符串}}]的某种状态,我上面描述的方法将会中断

如果您想要子字符串本身,MySQL有substring函数,MySQL详细说明了SUBSTRING函数,详细信息为https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring,您可以在SELECT中使用}子句,可能使用LOCATE来获取要在子字符串中使用的索引。如果没有看到您当前的SQL,就很难描述如何将它放在一起。