我在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可以分享你的想法,那就太好了。
答案 0 :(得分:27)
这是因为你已经将@a定义为VARCHAR(10),但你已经尝试将12个字符放入其中......意味着“%”从最后丢失
答案 1 :(得分:3)
DECLARE @a VARCHAR(10)就是答案。 @a永远不会包含%。
答案 2 :(得分:-2)
LIKE是一个通配符,意思是“你喜欢的任何东西”。