Почему LIKE не возвращает строки для переменных с '%' в конце?
-
12-09-2019 - |
Вопрос
Я нахожу это довольно странным на 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, мог поделиться своими мыслями, это было бы здорово.
Решение
Это потому, что вы определили @a как VARCHAR(10), но вы пытались ввести в него 12 символов ... это означает, что "%" теряется в конце
Другие советы
ОБЪЯВИТЬ @a VARCHAR(10) - это ответ.@a никогда не содержит %.
LIKE - это подстановочный знак, означающий "все, что вам здесь нравится".
Не связан с StackOverflow