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.

Était-ce utile?

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
scroll top