为什么LIKE不返回末尾带有'%'的变量的行?

Sim*_*hes 1 sql sql-server like-keyword sql-like

我在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.
Run Code Online (Sandbox Code Playgroud)

搜索包含%字符的@a和没有添加'%'的@a之间有什么不同?

如果你们中的任何一个SQL Guru可以分享你的想法,那就太好了.

Ada*_*Dev 27

这是因为你已经将@a定义为VARCHAR(10),但是你已经尝试将12个字符放入其中......意味着"%"从最后丢失