2013-04-22 225 views
-1
SELECT * 
FROM customers 
WHERE Firstname LIKE 'George' 

的问题是,我在与塔的名字乔治和查询结果表超过1行显示只有一行SQL查询只返回一行(像)

+2

你的整理和字符集是什么? – swasheck 2013-04-22 16:43:56

+0

@swasheck朗姆酒和可乐。 – Kermit 2013-04-24 01:16:06

回答

4

你需要添加通配符%匹配包含george

SELECT * 
FROM customers 
WHERE Firstname LIKE '%George%' 
任何值210

声明

WHERE Firstname LIKE 'George' 

相当于与

WHERE Firstname = 'George' 

这就是为什么你只得到一个记录其姓名为george

更新1

+3

没有通配符的'LIKE'不等于'='的100%。请参阅:** ['LIKE'运算符](http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like)** – 2013-04-22 17:29:10

+0

@ypercube更不用说索引如果存在左侧的通配符则不会使用。 – Kermit 2013-04-23 19:10:09

+0

@FreshPrinceOfSO我的观点只是比较'=​​'和('LIKE'没有通配符)。 – 2013-04-23 19:19:48

5

您将要包含通配符%字符包括有George存在于名行:

SELECT * 
FROM customers 
WHERE Firstname LIKE '%George%'; 

如果George将al方式出现在开头,那么你可以包括结束通配符:

SELECT * 
FROM customers 
WHERE Firstname LIKE 'George%'; 
+1

+1 .. downvoters可能是[blank]的追随者。 – Kermit 2013-04-24 01:15:45

-2

尝试

LOWER(Firstname) LIKE '%george%' 

处理部分值,避免情况sensietivity问题。

+0

我认为大多数DB都不区分大小写。 – Sunny 2013-04-22 16:46:21

+0

@Sundeep是正确的,你不必担心区分大小写。 – Zane 2013-04-23 22:56:58

+0

无需继续投票......我明白了。 – Silvertiger 2013-04-24 01:17:45