仅从db字段中提取大写文本

时间:2012-02-13 17:15:55

标签: database sqlite text-extraction

我“继承”了一个带有表中字段的数据库,其中有小写和大写混合在一起,例如。

gateway 71, HOWARD BLVD, Chispa, NY

它们不容易与代码“分离”,因为它们并不总是以这种形式出现。我需要的是一种只提取大写字母的方法。这可以用SQLite吗?

2 个答案:

答案 0 :(得分:3)

这种情况下,使用任何其他WHERE要求可能更容易(也许更快)SELECT,并创建一个游标来迭代结果,在代码中执行大写检查。

SQLite的另一个选择是创建custom function,所以你可以这样做:

SELECT foo WHERE MYISALLUPPERFUNC(foo) = 1;

答案 1 :(得分:1)

作为NuSkooler mentions,使用游标可能更容易,更快捷;如果你只需要这样做一次,这是一个特别有吸引力的选择。

这是一个简单的例子(使用Python REPL内置的SQLite):

import sqlite3

with sqlite3.connect(":memory:") as conn:
    conn.execute('''create table t (c, newc);''')
    conn.commit()
    conn.execute('''insert into t (c) values (?);''', ('testing MAIN ST',))
    conn.commit() 
    results = conn.execute('select c from t;').fetchall()
    for line in results:
        tokens = line[0].split()
        filtered_tokens = [i for i in tokens if i.isupper()]
        newc = ' '.join(filtered_tokens)
        conn.execute('update t set newc = ?;',(newc,))
        conn.commit()

    conn.execute('''select c,newc from t;''').fetchone()
    # (u'testing MAIN ST', u'MAIN ST')