2010-05-25 2 views

Répondre

4

Il fonctionne si vous ajoutez une taille à votre déclaration initiale du varchar:

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

+1 USEFULL - me battre pour elle! Je garderai ma réponse de toute façon car c'est un pointeur vers une référence sur des gotchas similaires – AdaTheDev

2

C'est parce que si vous ne définissez pas la taille de la variable NVARCHAR, il sera en défaut de la taille 1. Donc, @s ne contiendra jamais que 'a'.

Vous devez toujours être prudent, pour vous assurer de définir explicitement les tailles car différents scénarios se comportent différemment comme I blogged here.

Ainsi, il suffit de changer

DECLARE @s NVARCHAR 

à (par exemple)

DECLARE @s NVARCHAR(20) 
Questions connexes