SQL中“LIKE”和“=”之间有什么区别?

时间:2009-10-01 16:25:41

标签: sql syntax comparator

之间有什么区别:

SELECT * FROM users WHERE username="davyjones"

SELECT * FROM users WHERE username LIKE "davyjones"

(我想我已经搞砸了语法......原谅我, 我主要是一个桌面应用程序开发人员)

13 个答案:

答案 0 :(得分:39)

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

例如

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

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

Zoom, Boom, Loom, Groom

答案 1 :(得分:30)

根据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之间的主要区别之一。

答案 2 :(得分:12)

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

查看此示例LIKE:http://www.techonthenet.com/sql/like.php

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

更新:请注意,结果 不同的CHAR类型列存在重大差异。有关详细信息,请参阅this answer。当使用VARCHAR(可能是标准)时,以上是等价的,等于是首选。

答案 3 :(得分:4)

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

SELECT * FROM users WHERE username LIKE 'joe%'

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

答案 4 :(得分: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

答案 5 :(得分: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%'

答案 6 :(得分:2)

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

SELECT * FROM users WHERE username LIKE 'davy%'

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

答案 7 :(得分:1)

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

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

答案 8 :(得分:1)

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

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

See more examples.

和等于=用于等式匹配。

答案 9 :(得分:1)

与模式匹配运算符类似,=是精确匹配运算符。即W%之类的名称,其意思是以W开头,后面是一个或多个字符 和=,即名称='James'这是完全匹配的

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

据我所知,没有区别,但是你写的两个选择的时间成本。通常一个人使用LIKE%,意思是“任何字符串”。我认为还有一个字符可以与LIKE用于“任何角色”,不知道没有谷歌搜索是什么。

但是,正如你的两个选择一样,我看到的唯一区别是不同的运行时间,因为LIKE以正则表达式方式使用。

答案 12 :(得分:0)

Like可让您与外卡操作员一起工作,您可以在like 'davyjon%'的情况下使用它来获取以davyjon开头的所有结果,并准确了解放置'davyjones',您也可以在这种情况下使用=