質問

I have code to search the typed words from the text box, Get the typed word, search it in the web sql database and show the result in the HTML page.

In that i can search the word exactly as it is, using LIKE.

(i.e)

SELECT * FROM tblName WHERE SearchWord LIKE %<typedword>%

If the table has,

  1. Hello Doctor
  2. Hi Sir
  3. Hello World
  4. Welcome Programmer

And the user types as "Hello", it shows me

**Hello** Doctor
**Hello** World

I need to display the result even if the user wrongly arranges the words,

i.e If the user types as "World Hello"

It is not showing any results. But, I want to show the user

Hello World

Can you please help me?

役に立ちましたか?

解決

So you want an AND search using each of the words entered, rather than the exact string? Howabout something like this:

var yourSearchText = 'World Hello';
var searchTerms = yourSearchText.split(' ');
var searchTermBits = [];
for(var i=0; i<searchTerms.length;i++) {
        searchTermBits.push("word LIKE %"+searchTerms[i]+"%");
}

var result = searchTermBits.join(" AND ");
var query = 'SELECT * FROM TABLE WHERE '+result;

this will give you a query like:

SELECT * FROM table WHERE word LIKE '%world%' AND word LIKE '%hello%'

change the AND to an OR if you want to match any of the search terms rather than all.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top