我有一个列,我想从中提取字符串前后的所有内容。我有以下条目:
[{"model": "test.question", "pk": 123456789, "fields": {"status": "graded"}}]
[{"model": "test.question", "pk": 123456789, "fields": {"status": "answered"}}]
我想在" status":{" 之后}}之前提取子字符串
答案 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,就很难描述如何将它放在一起。