select * from t; +--------------------------+ | name  &nbs..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

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

發(fā)布時(shí)間:2020-08-07 05:10:27 來(lái)源:網(wǎng)絡(luò) 閱讀:1442 作者:Amnesiasun 欄目:數(shù)據(jù)庫(kù)

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

例如有如下兩條數(shù)據(jù):

mysql> select * from t;
+--------------------------+
| name                     |
+--------------------------+
| 江蘇 鹽城 大豐區(qū)         |
| 鹽城 機(jī)場(chǎng)代碼(YNZ)       |
+--------------------------+

想要獲取到以空格分隔的第三列數(shù)據(jù),可以使用substring_index() 函數(shù)

mysql> select substring_index(name,' ',-1) as addr from t limit 1;
+-----------+
| addr      |
+-----------+
| 大豐區(qū)    |
+-----------+

substring_index(列名,分隔符,索引),索引指從第幾個(gè)字符開(kāi)始,-表示倒序,第一個(gè)位置從1開(kāi)始,不是0

想要獲取括號(hào)中的數(shù)據(jù)使用sql語(yǔ)句可以這樣做:

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


當(dāng)字段中值比較復(fù)雜時(shí),可以寫(xiě)腳本處理,python 庫(kù)中有很多處理數(shù)據(jù)的模塊,下面是自己之前寫(xiě)的腳本的一部分

import re
import os


def main():
    """此處將數(shù)據(jù)庫(kù)結(jié)果存儲(chǔ)成文件(由于是異構(gòu)數(shù)據(jù)庫(kù),沒(méi)有安裝驅(qū)動(dòng),
    如果是mysql數(shù)據(jù)庫(kù)可直接連接數(shù)據(jù)庫(kù)讀數(shù)據(jù)),字段以‘,’分隔,也可以使用其他分隔符"""
    with open('C:/Users/user/Desktop/1.txt', 'r') as f:
        while 1:  # 死循環(huán)
            line = f.readline()  # 一次讀一行
            if not line:  # 沒(méi)有數(shù)據(jù)時(shí)退出
                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)  # 清洗數(shù)據(jù),去除vip字段中的‘()’,‘|’等符號(hào),生成列表
                while '' in vip:
                    vip.remove('')  # 移除''字符
                while ' ' in vip:
                    vip.remove(' ')
                    vip_w = vip[0]  # 取出第一條數(shù)據(jù),可以進(jìn)行其他的處理,例如存入文件,或直接結(jié)果存入數(shù)據(jù)庫(kù)

            except Exception as e:
                print('error:', e)


if __name__ == '__main__':
    main()


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI