首页 > 解决方案 > 使用变量时 SQL LIKE 不同的输出

问题描述

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

请参阅以下内容 考虑一个名为 POSTS 的简单表,每个帖子都有 CONTENT 和 HEADING

邮政

现在,当我尝试从该表中选择时

SELECT * 
FROM Posts
WHERE Headline like '%'+'fun'+'%' OR Content like '%'+'fun'+'%'

我得到以下输出:

输出

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

DECLARE @test NVARCHAR = 'fun'
SELECT * FROM Posts
WHERE Headline like '%'+@test+'%' OR Content like '%'+@test+'%'

我得到这个输出:

输出2

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

标签: sqlsql-serverselect

解决方案


这是您的声明:

DECLARE @test NVARCHAR = 'fun'

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

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

DECLARE @test NVARCHAR(255) = 'fun'

推荐阅读