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

例如有如下两条数据:

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

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

mysql>selectsubstring_index(name,'',-1)asaddrfromtlimit1;+-----------+|addr|+-----------+|大丰区|+-----------+

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

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

mysql>selectsubstring_index(substring_index(name,'(',-1),')',1)asafromtlimit1,1;+------+|a|+------+|YNZ|+------+


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

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