views:

173

answers:

1

What is the purpose of putting an 'N' in front of function parameters in TSQL?

For example, what does the N mean in front of the function parameter in the following code:

object_id(N'dbo.MyTable')
+16  A: 

It indicates a "nationalized" a.k.a. unicode string contstant.

http://support.microsoft.com/kb/239530

When dealing with Unicode string constants in SQL Server you must precede all Unicode strings with a capital letter N, as documented in the SQL Server Books Online topic "Using Unicode Data".

http://msdn.microsoft.com/en-us/library/aa276823%28SQL.80%29.aspx

nchar and nvarchar

Character data types that are either fixed-length (nchar) or variable-length (nvarchar) Unicode data and use the UNICODE UCS-2 character set.

nchar(n)

Fixed-length Unicode character data of n characters. n must be a value from 1 through 4,000. Storage size is two times n bytes. The SQL-92 synonyms for nchar are national char and national character.

nvarchar(n)

Variable-length Unicode character data of n characters. n must be a value from 1 through 4,000. Storage size, in bytes, is two times the number of characters entered. The data entered can be 0 characters in length. The SQL-92 synonyms for nvarchar are national char varying and national character varying.

Joe Koberg
That's interesting. I always wondered why 'N' stood for 'Unicode', and why they didn't just use 'U'
JohnFx
@JohnFx: Just a guess, but I would bet that it was that 'U' has historically meant unsigned.
Austin Salonen
Nationalized text was in the SQL92 standard before unicode existed.
Joe Koberg