-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

まず、キーは予約済みのキーワードです。そのため、バッククォートで囲まれた角括弧 を追加する必要がある場合があります。次に、ワイルドカードを適切に使用する必要があります。多くの回答がすでにそれを示しています。サンプルデータに合わせて設定してください。

Set @sth:= 'joh'

方法 2 は、 を使用することREGEXPです。

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

方法 3 は、 を使用することinstrです。

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

を試すこともできますmatch againstしかし、部分的な文字列ではうまく機能しないようです。

それは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 に答える