(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