0

我在 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 语句不返回任何结果吗?

4

2 回答 2

6

改变

declare @test nvarchar

declare @test nvarchar(10)

SQL 小提琴演示

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

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

于 2013-10-02T12:16:19.047 回答
0

这是因为@test nvarchar 的大小初始化为 1,即它只包含 set 语句中的“1”。

如果将声明语句更改为@test nvarchar(5),它将起作用。

于 2013-10-02T12:21:08.287 回答