views:

3924

answers:

2

Would you tell me, please, when should I use N prefix before string in Transact-SQL query? I have started to work with a database where I don't get any results using query like this

SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%'

until I change pattern to N'%а_pattern%'. I never had to add this prefix in the past, so I am curious. a_field is defined as nvarchar(255), but I think the reason is something else.

Thank you!

+6  A: 

The following articles have some good information on the question. The short answer is just that there's a type mismatch between the unicode column and non-unicode string literal you're using. From the KB article, it looks like omitting the N prefix might still work in some cases, but it would depend on the code page and collation settings of the database. That might explain the change in behavior, if you were previously having success with the no-prefix method.

http://databases.aspfaq.com/general/why-do-some-sql-strings-have-an-n-prefix.html http://support.microsoft.com/default.aspx/kb/239530

Charlie
+1  A: 

I think the N-prefix tells sql server to treat the string as a unicode value. nvarchar columns are unicode so you should use this syntax when accessing these columns.

Rune Grimstad