On tor, 2010-05-13 at 23:52 -0400, Tom Lane wrote:
> Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp> writes:
> > Jaime Casanova <jaime@2ndquadrant.com> wrote:
> >> i migrate a ms sql server database to postgres and was trying some
> >> queries from the application to find if everything works right...
> >> when i was looking to those queries i found some that has a notation
> >> for nvarchar (ej: campo = N'sometext')
>
> > Do you have documentation for N'...' literal in SQLServer?
> > Does it mean unicode literal? What is the difference from U& literal?
> > http://developer.postgresql.org/pgdocs/postgres/sql-syntax-lexical.html
>
> > PostgreSQL doesn't have nvarchar types (UTF16 in MSSQL), and only
> > have mutlti-tyte characters. So I think you can remove N and just
> > use "SET client_encoding = UTF8" in the cases.
>
> Actually, the lexer translates N'foo' to NCHAR 'foo' and then the
> grammar treats that just like CHAR 'foo'. In short, the N doesn't do
> anything very useful, and it certainly doesn't have any effect on
> encoding behavior. I think this is something Tom Lockhart put in ten or
> so years back, and never got as far as making it actually do anything
> helpful.
This should maybe changed to just ignoring the N and treating N'' like
''.