如何使用sql从列中解析出带引号的值

如何使用sql从列中解析出带引号的值,sql,mysql,substr,Sql,Mysql,Substr,我有一个字段,它的值如下 s:1983年3月10日; s:4:男性; s:2:没有 我想解析出引用的值 它将是substr和instr的某种组合 这是双引号,我很难找到它的位置 我尝试过选择substrfield_值、instrfield_值、instrfield_值、null、2 from table where等 为一个noob问题道歉…这里有一些目前无法测试的东西: select substr(substr(field_value, instr(field_value,':')+1, CH

我有一个字段,它的值如下

s:1983年3月10日; s:4:男性; s:2:没有

我想解析出引用的值

它将是substr和instr的某种组合

这是双引号,我很难找到它的位置


我尝试过选择substrfield_值、instrfield_值、instrfield_值、null、2 from table where等


为一个noob问题道歉…

这里有一些目前无法测试的东西:

select substr(substr(field_value, instr(field_value,':')+1, CHAR_LENGTH(field_value)-1),
              instr(substr(field_value, instr(field_value,':')+1, CHAR_LENGTH(field_value)-1),':')+1)
编辑:在答案中加入我的评论:

select substr(field_value, instr(field_value,'\"'),CHAR_LENGTH(field_value)-1)

我曾经尝试过从表中选择substrfield_值、instrfield_值、instrfield_值、null、2,在MySQL中这样做有一个令人信服的理由吗?这不会是我为这项任务选择的十大工具…你在使用哪个数据库?答案会有所不同,这取决于mysql、sql server和其他数据库。例如,True FDumlao-PostgreSQL可以使用完整的perl样式的正则表达式。不过,标签上说MySQL是数据库,它支持更有限的正则表达式syntaxmysql。我熟悉正则表达式,但不在sql代码中。这很完美,但我需要双引号中的内容,而不是冒号。这正是我在想的问题。是“”吗?还是像sql中的\一样逃避它?我不知道。谢谢你!这有助于我离得更近!我想做的是使用以下事实,即您所有的示例都在第二个冒号后面有字符串,然后利用该冒号来获取字符串,而不必使用双引号。我不喜欢使用像这样必须使用特定知识的策略,因为它可能会改变,但我以前必须这样做。好的,那么使用正则表达式查找和替换来删除s。。。还是很傻?mysql还告诉我len函数不存在。我发现它。。。在mysql中,它是CHAR_长度而不是len