首页 > 解决方案 > SQLite 仅将数字或字母从一列复制到另一列

问题描述

我在 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”。真假?

标签: sqliteselectcopy

解决方案


好的,经过大量谷歌搜索等后,我最终使用 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 多行。


推荐阅读