mysqlでフィールド内の特定の位置の値を取得する


mysqlでフィールド内の特定の位置の値を取得する
たとえば、次の2つのデータがあります.
mysql> select * from t;
+--------------------------+
| name                     |
+--------------------------+
|                   |
|        (YNZ)       |
+--------------------------+

スペースで区切られた3番目の列のデータを取得するには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()