2011-10-19 70 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