Por que LIKE não retornar as linhas para as variáveis ??com '%' no final?
-
12-09-2019 - |
Pergunta
Eu acho isso muito estranho no 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.
O que é diferente entre a busca de @a que inclui o caractere%, e um que não faz, mas tem '%' anexado?
Se algum de vocês do SQL Guru poderia compartilhar seus pensamentos, isso seria ótimo.
Solução
É porque você definiu @a como um VARCHAR (10), mas você já tentou colocar 12 caracteres para ele ... ou seja, o "%" se perde a partir do final
Outras dicas
DECLARE @a VARCHAR (10) é a resposta. @a não contém o%.
COMO é um carácter universal, que significa "o que quiser aqui."
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow