1

我在 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 可以分享您的想法,那就太好了。

4

3 回答 3

27

这是因为您已将 @a 定义为 VARCHAR(10),但您尝试将 12 个字符放入其中……这意味着“%”从末尾丢失

于 2009-08-07T14:37:07.033 回答
3

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

于 2009-08-07T14:38:32.257 回答
-2

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

于 2009-08-07T14:37:30.607 回答