pourquoi cette requête ne fonctionne pas correctement?pourquoi t-sql patindex ne fonctionne pas avec la variable déclarée?
declare @s nvarchar
set @s = 'abcd'
select patindex('%b%', @s)
c'est le retour zéro.
pourquoi cette requête ne fonctionne pas correctement?pourquoi t-sql patindex ne fonctionne pas avec la variable déclarée?
declare @s nvarchar
set @s = 'abcd'
select patindex('%b%', @s)
c'est le retour zéro.
Il fonctionne si vous ajoutez une taille à votre déclaration initiale du varchar:
declare @s nvarchar(10)
set @s = 'abcd'
select patindex('%b%', @s)
+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
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)
j'accepte toutes les questions – mmtemporary