我在 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
有人可以向我解释为什么第一个 select 语句不返回任何结果吗?
我在 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
有人可以向我解释为什么第一个 select 语句不返回任何结果吗?
改变
declare @test nvarchar
到
declare @test nvarchar(10)
所以回答你的问题,来自nchar 和 nvarchar (Transact-SQL)
当在数据定义或变量声明语句中未指定 n 时,默认长度为 1。当未使用 CAST 函数指定 n 时,默认长度为 30。
这是因为@test nvarchar 的大小初始化为 1,即它只包含 set 语句中的“1”。
如果将声明语句更改为@test nvarchar(5),它将起作用。