2011-10-19 69 views
2

我对SQL很陌生,正在查看一些代码。我可以看到获取项目的基本结构,其中列=“苹果”或类似的东西。使用“,”分隔符查询sql数据库中的数据

select * from fruitsTable where fruit="apple" 

如果数据可以

apple 
orange 
apple,orange 
pear 
apple,pear 

有没有一种方法,使查询?我知道苹果,橙子和苹果,梨没有什么意义,但基本上我试图从数据库中过滤出数据,有时候它只是一个,有时候它是两类。我会如何过滤/查询数据库的东西呢?谢谢。

+0

哪个数据库和版本? –

回答

1

如果您使用MySQL,您可以使用WHERE FIND_IN_SET('apple', fruit)

对于其他数据库,您可以使用WHERE (',' || fruit || ',') LIKE '%,apple,%'

在这两种情况下,查询都不能使用索引,并且如果表格很大,它会很慢。

+0

+1为经常被忽视的简单答案。这对指数表现会有什么影响? – Seph

0
select * 
from fruitsTable 
where fruit like '%apple%' 

该查询所做的是返回fruit字段中某处具有字符串“apple”的所有记录。

N.B.请不要设计这样的数据库。 逗号分隔值是制作不良数据库的快捷方式。

+1

这也将匹配'菠萝',使用LIKE可靠,你需要更像'','水果&','LIKE'%,苹果,%'''。是的,这是一个非常糟糕的设计。最好有多行,其中关联的行共享一个密钥来关联它们。 – MatBailie

+0

@Dems好点。 – 2011-10-20 00:09:58