为什么条件@parameter like(condition)不返回结果,而用文字替换参数呢?

pro*_*iot 0 sql sql-server sql-server-2008 sql-server-2008-r2

我在mssql2008中尝试这个:

declare @test nvarchar

set @test = '12345'

select 'true' where @test like '%3%' -- no results, condition fails

select 'true' where '12345' like '%3%' -- returns true, condition passes
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么第一个选择语句不会返回任何结果吗?

Adr*_*der 6

更改

declare @test nvarchar
Run Code Online (Sandbox Code Playgroud)

declare @test nvarchar(10)
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle DEMO

所以回答你的问题,来自nchar和nvarchar(Transact-SQL)

如果未在数据定义或变量声明语句中指定n,则默认长度为1.如果未使用CAST函数指定n,则默认长度为30.