DECLARE @A NVARCHAR = 'A';
DECLARE @AB NVARCHAR = 'AB';
if @A = @AB
BEGIN
PRINT N'A EQUALS AB';
END
打印出'EQUALS AB'......你能告诉我为什么吗?
阅读此page并没有真正帮助......
感谢。
答案 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