之间有什么区别:
SELECT * FROM users WHERE username="davyjones"
和
SELECT * FROM users WHERE username LIKE "davyjones"
(我想我已经搞砸了语法......原谅我, 我主要是一个桌面应用程序开发人员)
答案 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%';
和等于=
用于等式匹配。
答案 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'
,您也可以在这种情况下使用=