2009-08-27 31 views
5

Ben (bir varchar alanında) bir veritabanında potansiyel eşleşmeleri denetlemek istediğiniz bir değere sahip bu yüzden gibi bir şey yazmak Eh verilen: eğer çalışacaktırMySQL soru

SELECT * FROM table WHERE column LIKE "%value%" 

SELECT * FROM table WHERE CONCAT("%",column,"%") LIKE "value" 

ama don: değer "test" ve sütunun gibi bir şey bu ters gelse bile o zaman ben çizgisinde şeyler denedim bir maç almazsınız "Bu bir denemedir" değerini sahiptir İhtiyacım olan bir yanıt almak için bunu Google'a nasıl ifade edeceğimizi tam olarak bilmiyorum, lütfen yardım edin!

+1

Bunu neden yapmak istiyorsunuz? –

+0

, sütun adında benzer bir şeye sahip bir sütun kümesine sahipmiş gibi görünüyor ve onun 'değerinin' bunlardan herhangi birinde yer aldığını görmek istiyor ... – Irfy

+0

Söylemek serbest değil. –

cevap

11

Bir like bildirimini tersine çevirebilirsiniz. Sadece normal like sorgusu ile aynı sözdizimini kullanarak: Eğer vahşi ve çılgın keçe eğer Tabii

select 
    * 
from 
    table 
where 
    'value' like concat('%', column, '%') 

, ayrıca kullanabilirsiniz instr:

select * from table where instr('value', column) > 0 

Bir daha hızlı olduğu bilmiyorum , test etmek için bir MySQL örneğim olmadığı için, ancak ikisini de kazanmaya çalışmak için denemeye değer.

+0

+1. Bu iyi görünüyor. –

+0

çok havalı, bu bile mümkün olduğunu bilmiyordum! – Irfy

+1

Verileri dönüştürmek için, bir sütun için varsa, bir dizin kullanacaktır. Sütuna istediğiniz şeyi eklemek için satır içi görünümü kullanmak daha hızlıdır ve daha sonra karşılaştırın. Sadece sözcüğün bulunduğu satırları istiyorsan, INSTR kullanarak daha iyi olursun. –

3
SELECT * 
FROM table 
WHERE 'value' LIKE CONCAT('%', column, '%')