[SQL] = or LIKE ?
Hi. Can anyone explain me this behavior? testdb=# select E'\\' = E'\\'; ?column? -- t (1 row) testdb=# select E'\\' like E'\\'; ?column? -- f (1 row) Shouldnt the like operator do the same as the = if there occours no wildcards and stuff in the string? -- Jesper -- Sent via pgsql-sql mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] = or LIKE ?
Jesper Krogh writes: > Shouldnt the like operator do the same as the = if there occours no > wildcards and stuff in the string? If there are also no escape characters, then yeah. FWIW, 8.4 will complain about this case: regression=# select E'\\' like E'\\'; ERROR: LIKE pattern must not end with escape character regards, tom lane -- Sent via pgsql-sql mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] = or LIKE ?
Tom Lane wrote: Jesper Krogh writes: Shouldnt the like operator do the same as the = if there occours no wildcards and stuff in the string? If there are also no escape characters, then yeah. FWIW, 8.4 will complain about this case: regression=# select E'\\' like E'\\'; ERROR: LIKE pattern must not end with escape character So I cannot rely on the like operator to behave correct if I'd like to compare strings with backslashes (e.g. filepaths from MS Windows filesystems)? I actually get the same if it doesnt end with the slashes: testdb=# select E'\\t' like E'\\t'; ?column? -- f (1 row) testdb=# select E'\\t' = E'\\t'; ?column? -- t (1 row) -- Jesper -- Sent via pgsql-sql mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] = or LIKE ?
Jesper Krogh wrote: Tom Lane wrote: Jesper Krogh writes: Shouldnt the like operator do the same as the = if there occours no wildcards and stuff in the string? If there are also no escape characters, then yeah. FWIW, 8.4 will complain about this case: regression=# select E'\\' like E'\\'; ERROR: LIKE pattern must not end with escape character So I cannot rely on the like operator to behave correct if I'd like to compare strings with backslashes (e.g. filepaths from MS Windows filesystems)? I actually get the same if it doesnt end with the slashes: testdb=# select E'\\t' like E'\\t'; ?column? -- f (1 row) testdb=# select E'\\t' = E'\\t'; ?column? -- t (1 row) Ok. The pattern has to be "double escaped".. testdb=# select E'\\t' like E't'; ?column? -- t (1 row) (for the archives a ref to the documentations i didnt get by the read through) http://www.postgresql.org/docs/8.2/static/functions-matching.html#FUNCTIONS-LIKE -- Jesper -- Sent via pgsql-sql mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] = or LIKE ?
Jesper Krogh writes: > Ok. The pattern has to be "double escaped".. Or specify a different escape character. regards, tom lane -- Sent via pgsql-sql mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
Re: [SQL] = or LIKE ?
Jesper Krogh wrote: So I cannot rely on the like operator to behave correct if I'd like to compare strings with backslashes (e.g. filepaths from MS Windows filesystems)? test=# SELECT E'\\' LIKE E'\\' ESCAPE ''; ?column? -- t (1 row) -- Craig Ringer -- Sent via pgsql-sql mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql
