ホームページ  >  記事  >  データベース  >  フィールドに文字列が含まれているかどうかを判断する MySQL メソッド

フィールドに文字列が含まれているかどうかを判断する MySQL メソッド

藏色散人
藏色散人オリジナル
2020-02-07 09:43:0429074ブラウズ

フィールドに文字列が含まれているかどうかを判断する 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)=0

mysql で文字列を結合するのにプラス記号は使用できないことに注意してください。concat 関数を使用してください

方法 4: INSTR (フィールド、文字)

select * from table name where INSTR (フィールド、文字)

Inさらに、作者は上記の SQL の実行計画 (find_in_set は含まれていません) をチェックしたところ、それらはすべて次のとおりであることがわかりました。

フィールドに文字列が含まれているかどうかを判断する MySQL メソッド

インターネット上では、locate を使用すると、ファジークエリは速いですが、どうやって結論が出たのかわかりませんが、データ量が多いためかもしれません。

(無料の学習ビデオ チュートリアルの推奨:

mysql ビデオ チュートリアル)

以上がフィールドに文字列が含まれているかどうかを判断する MySQL メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。