I’m trying to submit a query through active record, and when I watch
the development log to see what is getting passed in, I see something
SELECT * FROM “my_model” WHERE (some_name LIKE E’%search%’)
Is the “E” character supposed to be there? I am not getting results
returned and I don’t know where that is coming from. Any ideas?
Are you using PostgreSQL? If so…
PostgreSQL also accepts “escape” string constants, which are an
extension to the SQL standard. An escape string constant is specified
by writing the letter E (upper or lower case) just before the opening
single quote, e.g. E’foo’. (When continuing an escape string constant
across lines, write E only before the first opening quote.) Within an
escape string, a backslash character () begins a C-like backslash
escape sequence, in which the combination of backslash and following
character(s) represents a special byte value. \b is a backspace, \f is
a form feed, \n is a newline, \r is a carriage return, \t is a tab.
Also supported are \digits, where digits represents an octal byte
value, and \xhexdigits, where hexdigits represents a hexadecimal byte
value. (It is your responsibility that the byte sequences you create
are valid characters in the server character set encoding.) Any other
character following a backslash is taken literally. Thus, to include a
backslash character, write two backslashes (\). Also, a single quote
can be included in an escape string by writing ', in addition to the
normal way of ‘’.