2

私は 2 つのテーブルを持っています: TableA: id, StringA TableB: id, StringB

TableA からすべての行をフェッチした後、TableB の単語にできるだけ近い単語を一致させたいと考えています。私はこのようなことをしようとしています:

c.execute('SELECT id, StringB FROM TableB WHERE StringB LIKE "'+stringa+'%" COLLATE NOCASE')
foundrows=c.fetchall()
if (len(foundrows)>0):
    print 'Hmm. Which one...'
    for foundrow in foundrows:    
        print 'looking for:'+stringa+'  found:'+ foundrow[1]

これは私に次のようなものを与えています:

Hmm. Which one...
looking for:goo  found:good
looking for:goo  found:good 1
looking for:goo  found:good 2
looking for:goo  found:good 1 dk
looking for:goo  found:good 2 dk
looking for:goo  found:Good Friday
looking for:goo  found:goose
looking for:goo  found:Good Friday 1
looking for:goo  found:good sport
looking for:goo  found:good job
looking for:goo  found:good morning
looking for:goo  found:good night
looking for:goo  found:goodbye 1
looking for:goo  found:goodbye e
looking for:goo  found:goodbye

私が本当にやりたいことは、「SELECT id, StringB FROM TableB WHERE StringB CONTAINS WORD "'+stringa+'"」のようなものです

「単語を含む」を達成する最良の方法は何ですか?

4

4 に答える 4

10

次のように where 句を作成します。

where (' ' || StringB || ' ') LIKE '% stringa %'

前後のスペースStringBにより、文字列の最初と最後で単語を確実にキャッチできます。

于 2013-05-08T21:37:53.277 に答える
0

これは次のように行うことができます。

WHERE StringB LIKE "%'+stringa+'%"
于 2013-05-08T21:36:06.660 に答える