SQL查询使用指南之截取需要的字段

原始数据

a = {"cheng2_shi4":"上海"}

要求

获取该字段的城市名称

语句

select substr((case when a like '%cheng%shi%' then a else null end)
,instr((case when a like '%cheng%shi%' then a else null end),'":"')+length('":"')
,instr((case when a like '%cheng%shi%' then a else null end),'"}')-instr((case when a like '%cheng%shi%' then a else null end),'":"')-length('":"')) as '城市'
from a

最外层:

截取字符:substr("需要进行截取的字段","从第几个字符开始","截取几个字符")

"需要进行截取的字段":

A是一个筐,里面什么都有,需要先找到其中含有城市信息的a

case when a like '%cheng%shi%' 
 then a 
 else null 
end

"从第几个字符开始":

重点是要找到目标字符串前后独一无二的识别标志,这个情况用了A中的 ":"作为识别标志

  • 从第几个字符开始 = 标志符所在的位置+标志符自身的长度(如下)
instr(
 (case when a like '%cheng%shi%' 
   then a 
   else null 
 end),'":"')
+length('":"')
  • 找到字符串位置:instr("进行施工的字符串(大)","在其中寻找的字符串(小)")

"截取几个字符":

  • 截取几个字符 = 目标字符串结束的位置(根据结尾标志符来定位) - 目标字符串开始的位置(根据开始标志符来定位)
instr((case when a like '%cheng%shi%' then a else null end),'"}')
-(instr((case when a like '%cheng%shi%' then a else null end),'":"')
  +length('":"'))
  • 其实完整版应该是这样:截取几个字符 = 目标字符串结束的位置(根据结尾标志符来定位)-1 - 目标字符串开始的位置(根据开始标志符来定位)+1*
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,947评论 0 5
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 5,678评论 0 8
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 4,778评论 0 0
  • 2019年6月2日 星期日 晴 辣,对于生活在西南地区的人们,可以说是不能割舍的东西,很多人从孩童时就开始吃辣...
    文道的杂货铺阅读 4,264评论 9 8