Почему LIKE не возвращает строки для переменных с '%' в конце? - PullRequest
1 голос
/ 07 августа 2009

Я нахожу это довольно странным на 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.

В чем разница между поиском @a, который включает символ%, и тем, к которому нет, но добавлен символ '%'?

Если бы кто-нибудь из вас, гуру SQL, мог поделиться своими мыслями, это было бы замечательно.

Ответы [ 3 ]

27 голосов
/ 07 августа 2009

Это потому, что вы определили @a как VARCHAR (10), но вы попытались вставить в него 12 символов ... то есть "%" теряется с конца

3 голосов
/ 07 августа 2009

ОБЪЯВИТЬ @a VARCHAR (10) является ответом. @a никогда не содержит%.

0 голосов
/ 07 августа 2009

LIKE - это символ подстановки, означающий «все, что вам здесь нравится».

...