使用变量时,SQL喜欢不同的输出

使用变量时,SQL喜欢不同的输出,sql,sql-server,select,Sql,Sql Server,Select,您好,今天我练习了SQL语句。当我试图从数据库中选择%like%时,当我使用变量和不使用变量时,它输出了不同的值 见下文 考虑简单的表称为帖子每个帖子都有内容和标题 现在,当我尝试使用 SELECT * FROM Posts WHERE Headline like '%'+'fun'+'%' OR Content like '%'+'fun'+'%' 我得到以下输出: 但是,如果我尝试在搜索中选择using variable作为: DECLARE @test NVARCHAR = 'fun'

您好,今天我练习了SQL语句。当我试图从数据库中选择%like%时,当我使用变量和不使用变量时,它输出了不同的值

见下文 考虑简单的表称为帖子每个帖子都有内容和标题

现在,当我尝试使用

SELECT * 
FROM Posts
WHERE Headline like '%'+'fun'+'%' OR Content like '%'+'fun'+'%'
我得到以下输出:

但是,如果我尝试在搜索中选择using variable作为:

DECLARE @test NVARCHAR = 'fun'
SELECT * FROM Posts
WHERE Headline like '%'+@test+'%' OR Content like '%'+@test+'%'
我得到这个输出:


所以我想知道,当理论上它必须有相同的输出时,这个变量为什么会改变结果?

这是您的声明:

DECLARE @test NVARCHAR = 'fun'
之后,@test的值为“f”。为什么?它只有一个字符

在SQL Server中使用字符串声明时始终输入长度:

DECLARE @test NVARCHAR(255) = 'fun'

这是你的声明:

DECLARE @test NVARCHAR = 'fun'
之后,@test的值为“f”。为什么?它只有一个字符

在SQL Server中使用字符串声明时始终输入长度:

DECLARE @test NVARCHAR(255) = 'fun'

这是一篇关于这个话题的好文章。这是一篇关于这个话题的好文章。