Hi,

I have trouble setting up a MATCH / AGAINST query for MySQL in Sequel.

MySQL's full text search features a boolean mode where, depending on the 
enclosing quotes of the search word, the query behaves differently.

Example:

SELECT * FROM `albums` WHERE MATCH(title) AGAINST(+"foobar" IN BOOLEAN MODE)

SELECT * FROM `albums` WHERE MATCH(title) AGAINST(+'foobar' IN BOOLEAN MODE)

Enclosing foobar in double quotes / single quotes is the difference here 
and triggers different matching behavior.
I'm struggling to build the latter query where the search word is enclosed 
in double quotes when using Sequel's lit & parameters.

Album.where(Sequel.lit("MATCH(title) AGAINST(+? IN BOOLEAN MODE)", 
"foobar")).sql
#=> SELECT * FROM `albums` WHERE MATCH(title) AGAINST(+'foobar' IN BOOLEAN 
MODE)

The provided parameter gets enclosed by single quotes, which causes the 
wrong behavior for my use case. Is it possible to build the query above 
with double quotes and using Sequel's parameterization feature or do I have 
to fall back to a raw SQL string in this case? If raw SQL is the only 
possibility here, can I still protect myself against SQL injections when 
the search word is coming from user input?  

I'm running this on:
* sequel gem 4.13.0
* mysql2 gem 0.3.20 
* MySQL 5.7.12  

Thanks in advance!

Best
Philipp

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to