Forum: Ruby on Rails Extra Characters in Find?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F0f84a42069fc37eb2552e69bb211458?d=identicon&s=25 pete (Guest)
on 2008-11-19 04:45
(Received via mailing list)
Hi-

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
like this:

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?

Thanks!
2505b282d57c29be797dc35b245adb4c?d=identicon&s=25 Philip Hallstrom (Guest)
on 2008-11-19 04:51
(Received via mailing list)
> 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
> like this:
>
> 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...

http://www.postgresql.org/docs/current/static/sql-...

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 ''.
This topic is locked and can not be replied to.