Mysql字符串切分的处理

前段时间做了一个对于字符串的切分,对于网页爬取的数据或者不规范的数据来源,常常会有这种需求。

由于在处理的过程中,sql语句中对字符串的出里函数以及方法不太了解,走了不少弯路。

这里记录一下。

Mysql 对字符串解切分处理,主要用到了4个函数,

SUBSTRING_INDEX(str,delim,count)

Str 是要处理字符串,

Delim是切分字符如:’,’

Count 是截取的字段数,如3,截取第三个,前的字段

这是一个很有趣的函数,当你的count,但你的count给到足够大了时候它不起任何作用,不如其他语言中的split()那么好用。

SUBSTRING(str,pos)

Str 字符串源,

Pos 开始截取的位置,pos可以为负,表示从后开始计数的位置。

CHAR_LENGTH(str)

REPLACE(str,from_str,to_str)

REPLACE(SUBSTRING(SUBSTRING_INDEX(`major_tax_violatio`,',',i),CHAR_LENGTH(SUBSTRING_INDEX(`major_tax_violatio`,',',i-1))+1),',','')

用来获取两个’,’分隔符之间的数据。

由于mysql没有在一行数据做出循环,或者保存数据办法(我不知道),所以我们能够控制截取的结果的只有count,以及where匹配。

这里我使用的是count++的方式,第一次截取所有的第一个’,’前的数据,第二次截取第二个’,’与第一个’,’之间的字符

where

SUBSTRING(SUBSTRING_INDEX(major_tax_violatio,',',i),CHAR_LENGTH(SUBSTRING_INDEX(major_tax_violatio,',',i-1))+1) regexp 'public_date'   使用正则表达式来筛选。

对于循环的跳出条件

  1. 当所有的元组的该字段都已经匹配上了(用一个rows+=ROW_COUNT(),来累加update的元组之和等于所有元组数)
  2. 当一个所有的已经匹配完毕(所有的,分割符分割的内容都已经匹配到了),但是有部分元组没有匹配到我们想要的数据。

--REPLACE(SUBSTRING(SUBSTRING_INDEX(`major_tax_violatio`,',',i),CHAR_LENGTH(SUBSTRING_INDEX(`major_tax_violatio`,',',i-1))+1),',','')

写入一个tmp表中,当这个表的所有字段都为null,或者’’时表示改字段已经匹配完毕。

Mysql字符串切分的更多相关文章

  1. Mysql字符串字段判断是否包含某个字符串的3种方法

    方法一: SELECT * FROM users WHERE emails like "%b@email.com%"; 方法二: 利用MySQL 字符串函数 find_in_set ...

  2. MySQL字符串函数substring:字符串截取

    MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...

  3. MySQL字符串转日期类型

    MySQL字符串转日期类型 select str_to_date('2014-08-20 00:00:00', '%Y-%m-%d %H:%i:%s'); >2014-08-20 00:00:0 ...

  4. mysql字符串截取

    mysql字符串截取 update zcat ) where lev1 is null; update zcat ) where lev2 is null; 函数: 1.从左开始截取字符串 left( ...

  5. MySQL 字符串截取相关函数

    MySQL 字符串截取相关函数 在工作中,可能需要将某些字段按某个分割符组成一个字符串作为字段值存取到数据库表中,比如某个任务对应三个结果,分别存储在不同的数据表中,这时可以将这三个不同表的主键按照约 ...

  6. MySQL字符串函数

    字符串大写和小写转换 MySQL 字符串大写和小写转化函数有两对: lower(), uppper() 和 lcase(), ucase() mysql> select lower('DDD') ...

  7. MySQL字符串函数、日期时间函数

    MySQL字符串函数.日期时间函数 一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位 ...

  8. Mysql Order By 字符串排序,mysql 字符串order by

    Mysql Order By 字符串排序,mysql 字符串order by ============================== ©Copyright 蕃薯耀 2017年9月30日 http ...

  9. Mysql字符串截取总结:left()、right()、substring()、substring_index()

    同步首发:http://www.yuanrengu.com/index.php/20171226.html 在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现 ...

随机推荐

  1. Gravatar 头像使用

    Gravatar :如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的blog或者留言本上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Grava ...

  2. ubuntu 16.04 编译安装 amule (开启GUI)

    安装依赖 $ -dev libgeoip-dev zlib1g-dev libupnp-dev libboost-all-dev libwxbase3.-dev libwxgtk3.-dev buil ...

  3. Python学习之路基础篇--07Python基础+编码、集合 和 深浅Copy

    1 小数据池(节省内存) 只有数字和字符串中内存,储存在同一个内存地址中 数字的范围在-5~256中,字符串有以下两个特点:不能含有特殊字符,还有就s*20 不是同一个地址,而要*21就不是了 2 编 ...

  4. 双十一LoanMarket压力测试报告

    测试背景 评估服务器资源及几个重要接口的并发性能. 测试需求 由开发提供的5个重要接口: 业务场景 URL 访问量(万) TPS 请求比例(%) 随手借点-首页产品接口 /suishoujiedian ...

  5. MATLAB实现Brovey图像融合

    自定义函数: function BF=Brovey_fuse(Hyperspectral_image,High_resolution_image) x0=imread(Hyperspectral_im ...

  6. python_ 基本语法

    一.基础知识: 1.鸡汤 摘抄至 :简明 python 教程 在人生中取得成功,与其说靠天才与机会,不如说靠专注与毅力! Python 特点:简单.易于学习(简单得语法体系).自由且开发.高级语言.跨 ...

  7. Lucene架构

    先整体上看一下Lucene的架构设计图(见下图),先看上层应用,首先是信息采集的过程,文件系统.数据库.万维网以及手工输入的文件都可以作为信息采集的对象,也是要搜索的文档的来源,采集万维网上的信息一般 ...

  8. laravel 还原项目到正常状态

    首先回滚数据库迁移: $ php artisan migrate:rollback 还原修改文件到原始状态: $ git checkout . 查看文件修改状态: $ git status 可以看出剩 ...

  9. hive最全学习线路和实践练习

    非原创,源自:https://www.cnblogs.com/snowbook/p/5723767.html hive被大多数企业使用,学习它,利于自己掌握企业所使用的技术,这里从安装使用到概念.原理 ...

  10. vue列表拖拽组件 vue-dragging

    安装 $ npm install awe-dnd --save 应用 在main.js中,通过Vue.use导入插件 import VueDND from 'awe-dnd' Vue.use(VueD ...