我需要一个sql select语句来从这个字符串中检索04:30和test.zip:
{"TIME":"04:30","DATE":"11\/25\/2013","FILENAME":["test.zip"]}
答案 0 :(得分:0)
你不能解码它并使用PHP吗? (假设你无法改变它存储在数据库中的方式)
<?php
$str = '{"TIME":"04:30","DATE":"11/25/2013","FILENAME":["test.zip"]}';
$o = json_decode($str);
$time = $o->TIME;
$file = $o->FILENAME[0];
var_dump($time); //"04:30"
var_dump($file); //"test.zip"
在MySQL中使用正则表达式替换等需要UDF(用户定义函数)mysql-udf-regexp
如果以上都不是可行的解决方案(更改数据库结构,使用PHP,使用MySQL UDF),您需要具有创造性。它需要该字符串的已知静态格式,但您可以替换其他部分和子字符串。例如:
SELECT SUBSTRING(REPLACE(`column_name`,'{"TIME":"',''),1,5) AS `time` FROM `table_name`
文件更复杂,此示例假设数组中只有一个文件名
SELECT REPLACE(SUBSTRING(`column_name`,LOCATE('"FILENAME":["',`column_name`)+13),'"]}','') AS `file` FROM `table_name`
这两个字段选择分别得到04:30
和test.zip
(你当然可以在同一个语句中使用这些函数,而不是像我一样,用逗号分隔它们)
答案 1 :(得分:0)
使用此\[(.*?)\]
它返回[
和]
并且04:30使用TIME":(.*?),
它在"TIME":