我在sql server 2000中文版中,在联机帮助里面有下面的一段话:
运行时生成语句
在调用数据库 API 函数或方法执行 SQL 语句前,大多数 Microsoft® SQL Server™ 应用程序必须在运行时动态生成这些语句。例如,使用 ODBC 的 C 语言应用程序动态地将一个或多个 SQL 语句生成到字符数组中,然后将此数组传递给 ODBC SQLPrepare 或 SQLExecDirect 函数。Transact-SQL 支持使用以下两种方法在运行时生成 Transact-SQL 脚本、存储过程和触发器中的 SQL 语句: 使用 sp_executesql 系统存储过程执行 Unicode 字符串。sp_executesql 支持与 RAISERROR 语句相似的参数替换。
使用 EXECUTE 语句执行字符串。EXECUTE 语句不支持在执行的字符串中的参数替换。 
下面是使用 sp_executesql 执行动态生成包含 SQL 语句的字符串的简单示例:USE Northwind
DECLARE @SQLString NVARCHAR(500)/* Set column list. CHAR(13) is a carriage return, line feed.*/
SET @SQLString = N'SELECT FirstName, LastName, Title' + CHAR(13)/* Set FROM clause with carriage return, line feed. */
SET @SQLString = @SQLString + N'FROM Employees' + CHAR(13)/* Set WHERE clause. */
SET @SQLString = @SQLString + N'WHERE LastName LIKE ''D%'''EXEC sp_executesql @SQLString
GO
我想知道N'FROM Employees'这句的From Employees前面的字母N是干什么的?

解决方案 »

  1.   

    Unicode编码的意思,英文里是ASCII编码,一个字母占一个字节,而中文就占两个字节,所以得用N
      

  2.   

    不是
    在SQL联机帮助里找  Unicode 数据类型
      

  3.   

    对于数据类型Nvarchar
    char is short for character.
    var is short for vary.
    N is short for national
    N表示Unicode类型,就是说同一字符在数据库中的数据页相同。
    非Unicode类型则不同,例如一个中文字符在繁体和简体操作系统的数据页不同,所以简体字在繁体下直接定义会变成问号(乱码,不识别),如果定义为N'中文'则没有问题。
      

  4.   

    N是指为unicode类型,但数据库中要设定为Nvarchar类型的才好些。