共计 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 a from t limit 1,1;+------+| a |+------+| YNZ |+------+ 当字段中值比较复杂时,可以写脚本处理,Python 库中有很多处理数据的模块,下面是自己之前写的脚本的一部分
import reimport osdef 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
正文完
星哥玩云-微信公众号






