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()
��文永久更新連結地址: