Ah I see. Clever! The final solution ended up being:

SELECT rowid FROM test_fts_index WHERE text MATCH '"' || ? || '"*'

with || on either side of the ?. Does that sound right? Without that extra
||, sqlite returned a syntax error (near ?).

As follow up, it'd be great to see this solution documented somewhere on
the FTS5 page: https://sqlite.org/fts5.html. I'm glad there's a way to
accomplish this, but the solution is a bit more clever than I would have
come up with on my own.

Thanks again for your help!

Ben

On Wed, May 23, 2018 at 1:15 AM, Dan Kennedy <danielk1...@gmail.com> wrote:

> On 05/23/2018 06:02 AM, Ben Asher wrote:
>
>> Hi there! I'm working with a FTS5 query like this:
>>
>> SELECT rowid FROM text_fts_index WHERE text MATCH ?
>>
>> The parameter is something like this: "user input"*
>>
>> The idea here is to do a MATCH prefix-type query in FTS5. The problem with
>> this query is that it breaks if the user input contains double quotes.
>> What
>> I want to do is something like this:
>>
>> SELECT rowid FROM text_fts_index WHERE text MATCH "?"*
>>
>
> Maybe:
>
>   SELECT rowid FROM test_fts_index WHERE text MATCH '"' ? || '"*'
>
> Dan.
>
>
>> This 2nd version of the query doesn't appear to work though because the ?
>> is escaped in the quotes and doesn't appear to be recognized as a
>> variable.
>> Is there a way I'm missing to do this kind of MATCH prefix query and only
>> escape the user input?
>>
>> Thanks!
>>
>> Ben
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@mailinglists.sqlite.org
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>



-- 
Ben
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to