为什么t-sql patindex无法使用声明的变量?

时间:2010-05-25 09:34:10

标签: tsql

为什么此查询无法正常工作?

declare @s nvarchar
set @s = 'abcd'
select patindex('%b%', @s)

它返回零。

2 个答案:

答案 0 :(得分:4)

如果你在varchar的初始声明中添加一个大小:

declare @s nvarchar(10) 
set @s = 'abcd' 
select patindex('%b%', @s) 

答案 1 :(得分:2)

这是因为如果你没有定义NVARCHAR变量的大小,它将默认为大小1.所以@s只会包含'a'。

您需要始终小心,确保明确定义尺寸,因为不同的情景与I blogged here的行为不同。

所以,只需改变

DECLARE @s NVARCHAR

到(例如)

DECLARE @s NVARCHAR(20)