1

一部のデータを抽出するには、SQL 要求を実行する必要があります。それが可能かどうかはわかりません。可能であれば、どうすればよいかわかりません。私がやりたいことを示すには、例の方が良いと思います。

非常に単純なテーブルを想定してみましょう:

--------------------------
| ID | domain            |
--------------------------
| 1  | example.com       |
--------------------------
| 2  | stackoverflow.com |
--------------------------

指定した文字列でdomain 終わるエントリを取得したいと思います。

ユーザー入力が の場合www.example.com、どの要求を実行して、そのエントリをdomain取得example.comできますか?

文字列www.example.comは string で終了します。つまり、述語の部分文字列を探しているため、SQL 構造をexample.com使用できません。% LIKE

これを明確にするための潜在的な汚い回避策を次に示します。

user_input = "www.stackoverflow.com"
for domain in get_all_domains_from_db():
    if user_input.endswith(domain):
        print "It's this one!"

Ps: 何か不明な点があればお知らせください。

4

4 に答える 4

1

Usually you do this as:

SELECT * FROM tablename WHERE domain LIKE '%example.com'

I'd advise you to never fetch and iterate over all the records in the database. That's a technique that only works for trivial amounts of data. Always use the database to do filtering for you.

于 2013-07-29T15:51:09.243 に答える
1

.ユーザー入力を s に沿って分割し、より短いシーケンスを試すことができます。

いくつかの pythonlike 疑似コード:

user_input = "www.stackoverflow.com"
split_domain = user_input.split('.')
query = 'SELECT * FROM table WHERE domain = ' + '.'.join(split_domain)
while db_returns_no_rows(query) and split_domain:
    del split_domain[0]
    query = 'SELECT * FROM table WHERE domain = ' + '.'.join(split_domain)
于 2013-07-29T16:36:39.583 に答える