ホームページ >データベース >mysql チュートリアル >フィールドに文字列が含まれているかどうかを判断する MySQL メソッド
#フィールドに文字列が含まれているかどうかを判断する MySQL メソッド
方法 1: like
SELECT * FROM テーブル名 WHERE フィールド名 "% 文字 %" のような;方法 2: find_in_set()
mysql 文字列関数 find_in_set を使用する();SELECT * FROM users WHERE find_in_set('字符', 字段名);これは大丈夫ですが、どう理解できますか? Mysql には多くの文字列関数があります。find_in_set(str1,str2) 関数は、str2 内の str1 の位置インデックスを返します。str2 は「,」で区切る必要があります。 注: str2 が NO1: "3,6,13,24,33,36"、NO2: "13,33,36,39" の場合、2 つのデータの str2 フィールドに ' が含まれるかどうかを判断します。 3'、この関数は
mysql > SELECT find_in_set()('3','3,6,13,24,33,36') as test; -> 1 mysql > SELECT find_in_set()('3','13,33,36,39') as test; -> 0
方法 3:locate(character, field name)
Uselocate(character, field name) を完全に解決できます。 ) 関数が含まれている場合は、>0 の数値を返し、それ以外の場合は 0 を返します。 そのエイリアスは、select * from 表名 where locate(字符,字段) select * from 表名 where position(字符 in 字段);の位置です。例: サイト テーブルの URL に 'http:/' が含まれているかどうかを確認します。 /' 部分文字列が含まれていない場合は、URL 文字列の先頭で結合されます
update site set url =concat('http://',url) where locate('http://',url)=0mysql で文字列を結合するのにプラス記号は使用できないことに注意してください。concat 関数を使用してください
方法 4: INSTR (フィールド、文字)
select * from table name where INSTR (フィールド、文字) Inさらに、作者は上記の SQL の実行計画 (find_in_set は含まれていません) をチェックしたところ、それらはすべて次のとおりであることがわかりました。 インターネット上では、locate を使用すると、ファジークエリは速いですが、どうやって結論が出たのかわかりませんが、データ量が多いためかもしれません。 (無料の学習ビデオ チュートリアルの推奨:mysql ビデオ チュートリアル)
以上がフィールドに文字列が含まれているかどうかを判断する MySQL メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。