mysqlでlikeに代わるクエリー方法


Alex_guoyihao mysql likeファジイクエリに代わるメソッドLIKE文
SELECT column FROM table where condition like `%keyword%’
実際、locate(position)とinstrの2つの関数を使って代用することができます.
一、LOCATE文
SELECT column from table where locate(‘keyword’, condition )>0
二、locateの別名position
POSITION文
SELECT column from table where position(‘keyword’ IN condition )
三、INSTR文
SELECT column from table where instr( condition , ‘keyword’ )>0
locate、position、instrの違いはパラメータの位置が異なるだけで、同時にlocateの1つの開始位置のパラメータの外で、両者は同じです.
mysql> SELECT LOCATE(‘bar’, ‘foobarbar’,5);
Instr(str 1,str 2)には2つの使い方があります.1つは、前のパラメータが変数を書き、後に列名を書きます.あとは位置交換です.2つの効果は異なり、instr(str 1,str 2)はstr 2がstr 1にあることを意味し、後に変数を書く前に列名を書くと、テーブルのすべてのstr 1列の中値にstr 2変数が含まれているデータが検索され、その場合(列名like「ターゲットテーブル」)の効果と同じである.instrにはもう一つ注意しなければならない点があります.この関数に対して結果値を返す判断で、書かないときはデフォルトで「>0」を判断します.3つの可能性があり、それぞれの対応状況は以下の通りです.
instr(title,‘name’)>0はtitle like‘%name%’に相当する
instr(title,‘name’)=1はtitle like‘name%’に相当する
instr(title,‘name’)=0はtitle not like'%name%'に相当する速度で、この3つはlikeを使うよりやや速い.