SQLite仅将数字或字母从一列复制到另一列

时间:2018-07-18 23:31:29

标签: sqlite select copy

我在SQLite表中有一些数据,例如

111222_abc
def_333444
556789_hij
123456XY
789123ZZB

我想要的是一对只包含数字和字母的列,例如:

Col 1    Col 2 
111222   abc
333444   def
556789   hij
123456   XY
789123   ZZB

尝试过REGEX选择,但似乎不起作用,结果我只得到“ 1”或“ 0”。对/错?

1 个答案:

答案 0 :(得分:0)

好吧,经过大量的搜索等等,我最终使用Python进行了整理:con是一个sqlite连接。

    with con:
        cur = con.cursor()
        cur.execute('SELECT * FROM Table')

        rows = cur.fetchall()
        n=1
        for row in rows:
#            print (row)
            ID_Init=row[1]
            ID_Check=row[2]
            if ID_Init:
                temp=""
                ID_Base=re.findall(r'\d{6}',ID_Init)
                temp=''.join(ID_Base)
                ID_Base=temp

                temp=""
                ID_Extn=re.findall(r'[a-zA-Z]+',ID_Init)
                temp=''.join(ID_Extn)
                ID_Extn=temp
            else:
                if ID_Check:
                    temp=""
                    ID_Base=re.findall(r'\d+',ID_Check)
                    temp=''.join(ID_Base)
                    ID_Base=temp
                else:
                    ID_Base="NONE"
                ID_Extn="NONE"

            cur.execute('''UPDATE Table SET ID_Base=?, ID_Extn=? WHERE rowid==?''',(ID_Base, ID_Extn, n)) 
            n += 1 

这可能不是我想要做的最好的方法,但是它行得通,我对结果感到满意。最初的问题没有具体说明;但是当数字在正确的列中时,它们始终以6为一组。

我添加了第二项检查,其中数字可能在描述列中,并且它们之间有多余的字符。

注意:这会非常快速地处理我的10,000个奇数行。