问题
I have a blog search function on my website.
This is my search input: children lazy
I have a column in my SQLite database that is called: Children is getting lazy
I use the codes(Python) below to query the data:
many_posts0 = BlogPost.query.filter(or_((BlogPost.problem_name.ilike("%" + form.search.data + "%")),(BlogPost.text.ilike("%" + form.search.data + "%")))).order_by(BlogPost.date.desc())
However using the codes above, I cannot shows the result of the column "Children is getting lazy" with the search input "children lazy". If I make my search result as "children is", the column's data will show. I wonder if my problem is because of "ilike" in my query codes.
回答1:
split the sraach string by white space and join with '%'
# split words and join with "%"
search_string = "%" + "%".join(search_data.split()) + "%"
many_posts0 = BlogPost.query.filter(or_((BlogPost.problem_name.ilike(search_string)),(BlogPost.text.ilike("%" + form.search.data + "%")))).order_by(BlogPost.date.desc())
来源:https://stackoverflow.com/questions/62230718/how-can-i-query-and-get-data-from-my-sqlite-database-even-when-my-search-input-h