sql-server-2008 - NVarChar 变量比较

标签 sql-server-2008 tsql

这可能真的很愚蠢。我不太了解 T-SQL 中的 NVarChar 比较。
如果我尝试这样的事情:

DECLARE @A NVARCHAR  = 'A';
DECLARE @AB NVARCHAR  = 'AB';
if @A = @AB
BEGIN
 PRINT N'A EQUALS AB';
END

'A EQUALS AB'被打印出来......你能告诉我为什么吗?

阅读本文 page真的没有帮助...

谢谢。

最佳答案

因为您声明的 nvarchar 变量没有指定长度,所以它们的默认长度为 1。因此两个变量都只包含第一个字符 'A' .

试试这个:

DECLARE @A NVARCHAR(10)  = 'A';
DECLARE @AB NVARCHAR(10)  = 'AB';

if @A = @AB
BEGIN
 PRINT N'A EQUALS AB';
END

关于sql-server-2008 - NVarChar 变量比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9329803/

相关文章:

sql - SQL 中垂直联合列

sql-server-2008 - 查找一行中最后一个非空值的列名

sql - 从四个表中任意选择数据

sql - 打印当前月份的行,然后是一年中剩余的月份

SQL表选择

sql-server - Datetime BETWEEN 语句在 SQL Server 中不起作用

sql - MS SQL 2008 连接 - 从多个结果中选择一个

sql-server - 在 ssis 包中使用的存储过程中使用 "Set NOCOUNT ON"有什么好处?

sql - 如何组合/合并两个 SQL 查询结果中的列?

sql - 有什么方法可以在 SQL Server CTE 中的 WITH 子句之上进行选择吗?