为什么此查询无法正常工作?
declare @s nvarchar
set @s = 'abcd'
select patindex('%b%', @s)
它返回零。
答案 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)