使用变量时SQL LIKE不同的输出

Luk*_*vek 1 sql sql-server select

你好今天我练习了SQL语句.当我尝试从%like%中选择数据库时,它在我使用变量时以及当我不使用它时输出不同的值.

请参阅follorwing考虑名为POSTS的简单表,每个帖子都有CONTENT和HEADING

岗位

现在当我尝试从这个表中选择时

SELECT * 
FROM Posts
WHERE Headline like '%'+'fun'+'%' OR Content like '%'+'fun'+'%'
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

产量

但是,如果我尝试在搜索中选择使用变量:

DECLARE @test NVARCHAR = 'fun'
SELECT * FROM Posts
WHERE Headline like '%'+@test+'%' OR Content like '%'+@test+'%'
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

OUTPUT2

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

Gor*_*off 7

这是你的声明:

DECLARE @test NVARCHAR = 'fun'
Run Code Online (Sandbox Code Playgroud)

之后,@test有了价值'f'.为什么?它只有一个字符.

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

DECLARE @test NVARCHAR(255) = 'fun'
Run Code Online (Sandbox Code Playgroud)