-1

我有一个关于mysql的基本问题。在我的表“表”中,我有一个名为“foo”(字符串)的列。我想做这样的事情:

SELECT * FROM table WHERE %foo% LIKE '%thing%'

但这显然是不正确的。提前致谢。

4

3 回答 3

4
SELECT * FROM table WHERE key like '%sth%'
于 2013-01-02T02:27:08.563 回答
1
select * from table where key like '%sth%'
于 2013-01-02T02:27:42.877 回答
0

首先 key 是保留关键字。因此,您可能需要在方括号周围添加 带引号的反引号。其次,您需要正确使用通配符。许多答案已经向您表明了这一点。根据样本数据设置。

Set @sth:= 'joh'

方法 2 是使用REGEXP.

Select * from mytable 
where `key`
REGEXP @sth 
;

方法 3 是使用instr.

select * from landlord
where instr(`key`,@sth) > 0
;

你也可以试试match against。但它似乎不适用于partial strings

这是一个FullText搜索,你的桌子必须能够做到这一点。MYISAM 是唯一可以进行全文搜索的表类型。假设您没有启用它,那么您可以使用以下几Alter行修改表。使用FullText搜索,您实际上是在列上添加索引。key使用索引搜索变得更快。

`ALTER TABLE mytable ENGINE = MYISAM;`

Alter Table mytable
Add FULLTEXT(`key`)
;

Select * from mytable 
where match(`key`) 
against(%@sth% IN BOOLEAN MODE)
;

* SQLFIDDLE 演示

于 2013-01-02T02:34:11.833 回答