ホームページ >バックエンド開発 >PHPチュートリアル >(mysql) テーブルのフィールドに数値変数が含まれているかどうかを判断し、その変数を含むテーブル内のすべてのデータをリストする方法。

(mysql) テーブルのフィールドに数値変数が含まれているかどうかを判断し、その変数を含むテーブル内のすべてのデータをリストする方法。

WBOY
WBOYオリジナル
2016-06-13 13:49:202323ブラウズ

(mysql) テーブルのフィールドに数値変数が含まれているかどうかを判断し、その変数を含むテーブル内のすべてのデータをリストする方法
たとえば、テーブル table には次のフィールドが含まれています
id csite... .
1 1,2,13 ....
2 2,3,4 ....
3 1,4,5 ....
4 2,5,23 . ...
5 1,3,8....

数値変数 3 を取得したとします。数値 3 を含むすべてのデータ行をリストする方法

Use select id '%3%' のような csite または '%3,%' のような csite '%,3,%' のような csite または '%,3%' のような csite のテーブルからの ,csite

これはできません

望ましい結果は次のとおりです:
id csite....
2 2,3,4....
5 1, 3,8....

いくつかの情報を確認して、この charindex(3,csite)>0 を使用してみましたが、うまくいきませんでした。どうすればよいですか??

ドンSQL ステートメントとストアド プロシージャを複雑にしすぎないようにしてください

ありがとうございます! ! ! ! !



-----解決策---------
MySQL 独自の関数 FIND_IN_SET

FIND_IN_SET(str,strlist)
値を返します。文字列 str が N 個の部分文字列で構成されるリスト strlist 内にある場合、1 から N までの値を返します。文字列リストは、文字「,」で区切られた複数の部分文字列で構成されます。最初の引数が定数文字列で、2 番目の引数が SET 列タイプの場合、FIND_IN_SET() 関数はビット単位の演算を使用するように最適化されます。 str が strlist にない場合、または strlist が空の文字列である場合、戻り値は 0 です。いずれかのパラメータが NULL の場合、戻り値は NULL になります。最初のパラメータに「,」が含まれている場合、この関数はまったく機能しません:
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
2

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