MySQL 中获取字段中特定位置的值
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
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()
相关推荐
CoderToy 2020-11-16
wangshuangbao 2020-11-13
苏康申 2020-11-13
要啥自行车一把梭 2020-11-12
vitasfly 2020-11-12
emmm00 2020-11-17
王艺强 2020-11-17
ribavnu 2020-11-16
bianruifeng 2020-11-16
vivenwan 2020-11-13
moyekongling 2020-11-13
云中舞步 2020-11-12
aydh 2020-11-12
kuwoyinlehe 2020-11-12
minerk 2020-11-12
jazywoo在路上 2020-11-11
敏敏张 2020-11-11
世樹 2020-11-11