Почему LIKE не возвращает строки для переменных с '%' в конце?

StackOverflow https://stackoverflow.com/questions/1245084

Вопрос

Я нахожу это довольно странным на 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 - это подстановочный знак, означающий "все, что вам здесь нравится".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top