5

当我阅读 MSDN 的示例时raiserror

RAISERROR (N'This is message %s %d.', -- Message text.
           10, -- Severity,
           1, -- State,
           N'number', -- First argument.
           5); -- Second argument.
-- The message text returned is: This is message number 5.
GO

为什么文档使用%s指定 N'number', 并 %d指定5-- 第二个参数

MSDN 是这样写的:

例如,在下面的 RAISERROR 语句中,N'number' 的第一个参数替换了 %s 的第一个转换规范;并且 5 的第二个参数替换了 %d 的第二个转换规范。

我的问题是:如何解释它?为什么不使用其他 like%a%b.any other%+apha可以替换它。我只是想得到一个有意义的理解。

4

1 回答 1

8

这表示参数数据类型。

+--------------------+----------------------+
| Type specification |      Represents      |
+--------------------+----------------------+
| d or i             | Signed integer       |
| o                  | Unsigned octal       |
| s                  | String               |
| u                  | Unsigned integer     |
| x or X             | Unsigned hexadecimal |
+--------------------+----------------------+

N'number'是一个nvarchar字符串文字。所以得到说明%s符。文字5是一个有符号指示符,因此由 表示%d

至于这些说明符的原因。这记录在RAISERROR主题中

这些类型规范基于最初为C 标准库中的printf函数定义的规范

于 2013-10-20T14:22:04.513 回答