2012-02-13 7 views
1

テーブルのフィールドにdbを継承します。たとえば、小文字と大文字が混在するフィールドを使用します。dbフィールドの大文字のみを抽出します。

gateway 71, HOWARD BLVD, Chispa, NY 

これらは必ずしもこの形式ではないため、コードで簡単に分割できません。私が必要とするのは、大文字のみを抽出する方法です。これはSQLiteでも可能ですか?

答えて

3

:ここ

は簡単な例(ビルトイン使ってPython REPLからのSQLite)ですコード内の大文字小文字をチェックして結果を反復処理するカーソルを作成して作成します。私は彼が大文字の単語を抽出し、大文字にそれらのすべてをオンにしないでしたいと思います

SELECT foo WHERE MYISALLUPPERFUNC(foo) = 1; 
1

NuSkooler mentionsとすると、これはおそらくカーソルを使用する方が簡単で高速です。これを一度だけ行う必要がある場合は特に魅力的なオプションです。あなたは可能性のある追加のWHERE条件に選択するには、このは、それだけで簡単に(そしておそらくより速い)とすることができる場合である

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') 
+1

SQLiteの持つ別のオプションは、あなたのような何かができるので、custom functionを作成することです。 – iDifferent

+0

ああ、ありがとう。間違った質問。更新された答え。 – bernie

+0

@AdamBernier:詳細な回答をありがとうございました。 – AsTheWormTurns

関連する問題