我“继承”了一个带有表中字段的数据库,其中有小写和大写混合在一起,例如。
gateway 71, HOWARD BLVD, Chispa, NY
它们不容易与代码“分离”,因为它们并不总是以这种形式出现。我需要的是一种只提取大写字母的方法。这可以用SQLite吗?
答案 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')