NVarChar变量比较

时间:2012-02-17 14:16:08

标签: 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
打印出'EQUALS AB'......你能告诉我为什么吗?

阅读此page并没有真正帮助......

感谢。

2 个答案:

答案 0 :(得分:7)

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

请改为尝试:

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

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

答案 1 :(得分:2)

DECLARE @A NVARCHAR  = 'A'; -- IS a NVARCHAR(1) containg 'A' 
DECLARE @AB NVARCHAR  = 'AB'; -- IS also a NVARCHAR(1) containg 'A' 
DECLARE @AB2 NVARCHAR(2)  = 'AB'; -- IS a NVARCHAR(2) containg 'AB' 

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


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