2012-09-07 38 views
0

夥計們只是一個簡單的問題。我有一個MySQL行字符串類似這樣
php搜索一個mysql字符串結果

'google.co.nz, stackoverflow.com, facebook.com, grubber.co.nz'


等等......我想搜索所有的表中的行,並檢查「facebook.com」多少次,顯示出來在所有的都像以上這樣的行如此澄清

我行看起來像這樣

-- id -- user -- likes 
    1  bob  facebook.com, google.co.nz, grubber.co.nz, stackoverflow.com 

,我想檢查多少次facebook.com在整個表顯示出來(在每一行)

+10

找到更多的細節你最好先規範化數據庫。 – knittl

+0

它是逗號分隔值嗎?我的意思是你有這樣的列,'ID','User'和'Likes'(這是csv)? –

+0

@ knittl我知道,結構是廢話它只是爲了測試 – ryanc1256

回答

5

假設每個用戶只能像在同一個頁面一次,這應該工作:

SELECT COUNT(*) 
FROM table 
WHERE likes REGEXP '[[:<:]]facebook.com[[:>:]]' 

PS:規範化表,你碰上嚴重的麻煩,像這樣的一個佈局不久的將來!

+0

這不符合notfacebook.com嗎? – Quentin

+0

是的,你是對的...正則表達式,然後... –

+0

只是規範! csv字段幾乎總是一個壞主意 – VDP

0

可以使用like運營商匹配的模式:

SELECT COUNT(id) AS occurences WHERE likes LIKE "%facebook.com%" 
0

,你可以使用 「LIKE」 語句。 它是這樣的(如果你想知道哪些用戶喜歡facebook.com)

SELECT * FROM yourtable 
WHERE likes LIKE '%facebook.com%' 

無論如何,請考慮存儲在1喜歡:N表結構,而不是作爲一個字符串

到那個你有一個存儲所有類似站點的表格,一個用戶表格和一個存儲分配的用戶喜歡錶格。

0

試試這個

select count(likes) from yourTable where likes like '%facebook.com%' 
1

你可以做一個懶惰的方式,發出如SQL查詢:

SELECT count(*) FROM my_table 
WHERE my_table.likes LIKE '%facebook.com%' 

這是真的(真的)不是CPU友好。特別是對於大型表格

否則,您可以使用MySQL全文索引功能。

您可以在this article