Извлечение только заглавного текста из поля базы данных - PullRequest
1 голос
/ 13 февраля 2012

Я "унаследовал" БД с полем в таблице, где смешаны строчные и прописные буквы, например

gateway 71, HOWARD BLVD, Chispa, NY

Их нелегко «разделить» с помощью кода, потому что они не всегда бывают в такой форме. Мне нужен способ извлечения только заглавных букв. Это возможно с SQLite?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

В этом случае может быть проще (и, возможно, быстрее) выбрать SELECT с любыми дополнительными требованиями WHERE, которые у вас могут возникнуть, и создать курсор для перебора результатов, выполняя проверки в верхнем регистре в коде.

Другой вариант с SQLite - создать пользовательскую функцию , чтобы вы могли сделать что-то вроде:

SELECT foo WHERE MYISALLUPPERFUNC(foo) = 1;
1 голос
/ 13 февраля 2012

Как отмечает NuSkooler , это, вероятно, проще и быстрее сделать с помощью курсора;особенно привлекательный вариант, если вам придется сделать это только один раз.

Вот краткий пример (с использованием встроенного SQLite из Python REPL):

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...