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

时间:2009-08-07 14:35:09

标签: sql sql-server sql-like like-keyword

我在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和没有添加'%'的@a之间有什么不同?

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

3 个答案:

答案 0 :(得分:27)

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

答案 1 :(得分:3)

DECLARE @a VARCHAR(10)就是答案。 @a永远不会包含%。

答案 2 :(得分:-2)

LIKE是一个通配符,意思是“你喜欢的任何东西”。