是否有任何区别:
SELECT * FROM users WHERE username="davyjones"
和
SELECT * FROM users WHERE username LIKE "davyjones"
(我想我已经贻误了语法......原谅我说,
我主要是一个桌面应用程序开发的家伙)
是否有任何区别:
SELECT * FROM users WHERE username="davyjones"
和
SELECT * FROM users WHERE username LIKE "davyjones"
(我想我已经贻误了语法......原谅我说,
我主要是一个桌面应用程序开发的家伙)
按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运行此。 顺便说一句,这是一个字符和VARCHAR处理之间的主要区别。
LIKE
允许局部匹配/使用通配符,而=
检查完全匹配。
例如
SELECT * FROM test WHERE field LIKE '%oom';
将返回行,其中字段值为以下任一:
Zoom, Boom, Loom, Groom
在这种情况下,没有什么区别,将拿出的结果。 但是,它使用了对比不同的方法,而“喜欢”会慢得多。
看看这个像的例子: http://www.techonthenet.com/sql/like.php
在这种情况下,你仍然要使用等号。
更新 :请注意,有一个关键的区别,当涉及到CHAR类型列在其结果会有所不同。 见这个答案的更多细节。 当使用VARCHAR(大概是范数),以上是等价的,等于是优选的。
LIKE
允许像通配符%
(任意数目的字符在这里)和_
(这里一个字符)。
SELECT * FROM users WHERE username LIKE 'joe%'
开始选择所有的用户名joe
。
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
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%'
这会给你同样的结果。 然而,像允许通配符,例如...
SELECT * FROM users WHERE username LIKE 'davy%'
唯一的语法问题是双引号代替单引号
LIKE支持通配符。 通常它使用的通配符%或_字符。
使用LIKE运算没有通配符是一样使用=操作符。
在LIKE
条件允许您使用通配符:
SELECT * FROM suppliers
WHERE supplier_name like 'Hew%';
查看更多的例子。
和equals =
用于平等匹配。
像是模式匹配操作者和=
是精确匹配操作。 即,其中,如姓名W%
这意味着先从W
和之后的一个或多个字符,并且=
即,其中名称='James'
这是确切的匹配
等于'='
仅仅是平等的。 在另一方面, LIKE
支持SQL通配符匹配。
所以,用LIKE
,你可以做name like '%jones'
得到琼斯结束所有名称。 随着LIKE
,百分比'%'
字符是什么,长度零个或多个,和下划线, '_'
,是任何一个字符。
据我所知,目前还没有什么区别,但时间成本两个选择你写。 通常一个使用LIKE
连同%
,意思是“任意字符串”。 我觉得也有可与中使用的字符LIKE
为“任何字符”,不知道那是什么,无需Google。
但随着你的两个选择去,我看到的唯一区别是不同的运行时间,因为LIKE
是在正则表达式-排序的时尚应用。
Like
让你与外卡运营商合作,你可以用它在你的情况为like 'davyjon%'
把所有的结果,从davyjon
,并得到确切的你可以将'davyjones'
,你也可以使用=
在这个案例