On 2010-12-08, Gnanakumar <gna...@zoniac.com> wrote: > Hi, > > We're running PostgreSQL v8.2.3 on RHEL5. > > In some places in our application, we use Regular Expression Match Operator > (~* => Matches regular expression, case insensitive) inside WHERE criteria. > > Example: > SELECT ... > FROM ... > WHERE (SKILLS ~* > '(^|\\^|\\||[^0-9|^a-z|^A-Z]|$)C#(^|\\^|\\||[^0-9|^a-z|^A-Z]|$)' > OR SKILLS ~* > '(^|\\^|\\||[^0-9|^a-z|^A-Z]|$).NET(^|\\^|\\||[^0-9|^a-z|^A-Z]|$)') > > In this case, we're trying to search/match for either "C#" OR ".NET" in > SKILLS column. > > My question here is, do I need to escape the characters "#" and "." here?
yes. ( '.' especially, I don't think '#' has a special meaning in regex) but as postgres uses posix extended regex simply escaping every non-letter character is safe. (^|\\^|\\||[^0-9|^a-z|^A-Z]|$) seems to be another way to write (^|$|[^0-9a-zA-Z]) both of which are locale dependant but that may not be an issue for you. -- ⚂⚃ 100% natural -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql