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. CentOS下将php和mysql命令加入到环境变量中-简单

    开发过程中.需要使用到php命令执行程序.但是php命令没有在全局命令中:每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了 例: php -v  或 mys ...

  2. webpack打包和gulp打包工具详细教程

    30分钟手把手教你学webpack实战 阅读目录 一:什么是webpack? 他有什么优点? 二:如何安装和配置 三:理解webpack加载器 四:理解less-loader加载器的使用 五:理解ba ...

  3. js···DOM2动态创建节点

    1.生成节点的方法  document.createElement(“div”) 2.插入节点的方法   父元素.appendChild(新节点) 在父节点中的子节点后面插入新的节点 3.在指定的位置 ...

  4. .NET数据采集

    public string GetHttpData(string Url) { string sException = null; string sRslt = null; WebResponse o ...

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

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

  6. P2930 [USACO09HOL]假期绘画Holiday Painting

    线段树水题,考虑到只有15列,所以我们对于每一列,我们都去维护一个线段树. 现在来考虑一下修改操作,因为每次修改的时候,我们都是将黑的改成白的,白的改成黑的,所以我们对线段树的每个节点维护当前这段区间 ...

  7. Python3字符串的操作

    红色字体代表必须记住 str.capitalize():把字符串的第一个字符大写 str.casefold():转换字符串中所有大写字符为小写,其他语言(非汉语或英文)中把大写转换为小写的情况只能用 ...

  8. bond-vlan-bridge

    拓扑介绍 Eth-Trunk5 down down 0% 0% 0 0 10GE1/0/5 down down 0.01% 0.01% 0 0 10GE2/0/5 down down 0.01% 0% ...

  9. Django学习笔记之URL与视图cookie和session

    cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  10. EasyMall注册功能

    EasyMall注册功能 1. 环境搭建 创建一个EasyMall的web应用 配置www.easymall.com网站,并配置为缺省的虚拟主机,将EasyMall配 置为缺省的web应用,在配置in ...