Pourquoi ne aime pas retourner les lignes à la fin pour les variables avec « % »?
-
12-09-2019 - |
Question
Je trouve cela assez étrange sur Microsoft SQL Server:
SELECT * FROM deliveries WHERE code LIKE '01999195000%'
-- 9 rows returned. Works.
DECLARE @a VARCHAR(10)
SET @a='01999195000%'
SELECT * FROM deliveries WHERE code LIKE @a
-- 0 rows returned? Why not?
SET @a = '01999195000'
SELECT * FROM deliveries WHERE code LIKE @a + '%'
-- 9 rows returned. Works.
Ce qui est différent entre la recherche de @a qui comprend le caractère%, et celui qui n'a pas, mais a « % » annexe?
Si pourrait partager de vous SQL Guru vos pensées, ce serait génial.
La solution
Il est parce que vous avez défini @a comme VARCHAR (10), mais vous avez essayé de mettre 12 caractères en elle ... ce qui signifie le « % » se perd de la fin
Autres conseils
DECLARE @a VARCHAR (10) est la réponse. @a contient jamais%.
LIKE est un caractère générique, ce qui signifie "tout ce que vous voulez ici".
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow