49

有什么区别:

SELECT * FROM users WHERE username="davyjones"

SELECT * FROM users WHERE username LIKE "davyjones"
4

13 回答 13

46

LIKE允许部分匹配/使用通配符,同时=检查完全匹配。

例如

SELECT * FROM test WHERE field LIKE '%oom';

将返回字段值为以下任意值的行:

Zoom, Boom, Loom, Groom
于 2009-10-01T16:26:50.797 回答
38

根据 SQL 标准,区别在于 CHAR 列中尾随空格的处理。例子:

create table t1 ( c10 char(10) );
insert into t1 values ('davyjones');

select * from t1 where c10 = 'davyjones';
-- yields 1 row

select * from t1 where c10 like 'davyjones';
-- yields 0 rows

当然,假设您在符合标准的 DBMS 上运行它。顺便说一句,这是 CHAR 和 VARCHAR 之间的主要区别之一。

于 2009-10-01T16:31:11.567 回答
12

在这种情况下,结果不会出现差异。但是,它使用不同的方法进行比较,“LIKE”会慢得多。

看看这个 LIKE 的例子:http ://www.techonthenet.com/sql/like.php

在这种情况下,您仍然想使用等号。

更新:请注意,当涉及 CHAR 类型的列时,结果有所不同。有关更多详细信息,请参阅此答案。当使用 VARCHAR (大概是规范)时,以上是等价的,equals 是首选。

于 2009-10-01T16:27:26.193 回答
4

LIKE允许使用通配符,例如%(此处为任意数量的字符)和_(此处为一个字符)。

SELECT * FROM users WHERE username LIKE 'joe%'

选择所有以 开头的用户名joe

于 2009-10-01T16:27:21.503 回答
4
create table A (id int,name varchar(30))

insert into A values(4,'subhash')

使用尾随空格搜索名称字段:

select * from A where name='Subhash '
--Yields 1 row
select * from A where name like 'Subhash '
--Yields 0 row
于 2011-06-17T05:50:33.943 回答
3

LIKE 搜索模式。

/* Returns all users whose username starts with "d" */
SELECT * FROM users WHERE username LIKE 'd%'

/* Returns all users whose username contains "dav" */
SELECT * FROM users WHERE username LIKE '%dav%'
于 2009-10-01T16:29:03.070 回答
2

这会给你同样的结果。但是,LIKE 允许使用通配符,例如...

SELECT * FROM users WHERE username LIKE 'davy%'

唯一的语法问题是双引号而不是单引号

于 2009-10-01T16:27:00.017 回答
1

LIKE支持通配符。通常它使用 % 或 _ 字符作为通配符。

使用不带通配符的 LIKE 运算符与使用 = 运算符相同。

于 2009-10-01T16:26:57.683 回答
1

LIKE条件允许您使用通配符:

SELECT * FROM suppliers
WHERE supplier_name like 'Hew%';

查看更多示例。

Equals=用于相等匹配。

于 2009-10-01T16:28:42.953 回答
1

Like is 模式匹配运算符和=is 精确匹配运算符。即,其中的名称W%表示以一个或多个字符开头,W然后是一个或多个字符,=即名称与='James'此完全匹配

于 2009-11-29T18:30:48.567 回答
0

平等'='只是为了平等。另一方面,LIKE支持 SQL 通配符匹配。

因此,LIKE您可以name like '%jones'获取所有以 jones 结尾的名称。使用LIKE, 百分号'%'可以是任意长度,长度为零或更长,而下划线字符'_', 可以是任意一个字符。

于 2009-10-01T16:27:29.937 回答
0

据我所知,你写的两个选择没有区别,只是时间成本。通常LIKE与 一起使用%,意思是“任何字符串”。我认为还有一个字符可以与LIKE“任何字符”一起使用,如果没有谷歌搜索,不确定那是什么。

但是随着您的两个选择,我看到的唯一区别是运行时间不同,因为LIKE它用于 regexp-sort-of-fashion。

于 2009-10-01T16:29:20.620 回答
0

Like让您与通配符运算符一起工作,您可以在您的案例中使用它like 'davyjon%'来获取以 开头的所有结果davyjon,并获得您可以放置​​的确切结果'davyjones',您也可以=在这种情况下使用

于 2009-11-29T18:03:12.830 回答