阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL 中获取字段中特定位置的值

189次阅读
没有评论

共计 1467 个字符,预计需要花费 4 分钟才能阅读完成。

MySQL 中获取查询字段中特定位置的值

例如有如下两条数据:

mysql> select from t;
+--------------------------+
name                     |
+--------------------------+
| 江苏 盐城 大丰区         |
| 盐城 机场代码 (YNZ)       |
+--------------------------+

想要获取到以空格分隔的第三列数据,可以使用 substring_index() 函数

mysql> select substring_index(name,'',-1) as addr from t limit 1;
+-----------+
| addr      |
+-----------+
| 大丰区    |
+-----------+

substring_index(列名,分隔符,索引), 索引指从第几个字符开始,- 表示倒序,第一个位置从 1 开始,不是 0

想要获取括号中的数据使用 sql 语句可以这样做:

mysql> select substring_index(substring_index(name,'(',-1),')',1) as from t limit 1,1;
+------+
| a    |
+------+
| YNZ  |
+------+ 

当字段中值比较复杂时,可以写脚本处理,Python 库中有很多处理数据的模块,下面是自己之前写的脚本的一部分

import re
import os
 
 
def main():
    """ 此处将数据库结果存储成文件 (由于是异构数据库, 没有安装驱动,
    如果是 mysql 数据库可直接连接数据库读数据 ),字段以‘,’分隔,也可以使用其他分隔符 """
    with open('C:/Users/user/Desktop/1.txt''r') as f:
        while 1# 死循环
            line = f.readline()  # 一次读一行
            if not line:  # 没有数据时退出
                break
            server_room, host, wip, lip, server_role_id, raid, cpu, disk, cip, provider, model, mem, os, os_version, tip, port, vip, p_version = line.split(',')
            # 将行分隔成字段
 
            # port store
            try:
                vip = re.split('(|\(|)|\)|\||,', vip)  # 清洗数据,去除 vip 字段中的‘()’,‘|’等符号,生成列表
                while ''in vip:
                    vip.remove('')  # 移除 '' 字符
                while '' in vip:
                    vip.remove('')
                    vip_w = vip[0# 取出第一条数据,可以进行其他的处理,例如存入文件,或直接结果存入数据库
 
            except Exception as e:
                print('error:', e)
 
 
if __name__ == '__main__':
    main()

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2018-01/150619.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1467字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中