テーブルのフィールドに変数が含まれているかどうかを判断する方法

952 ワード

今日、データベース・クエリーを行うときに、指定したパラメータに基づいてパラメータがデータベース・テーブルのフィールドにあるかどうかを判断し、レコード・セットを返す方法が課題に直面しました.
例:
与えられたパラメータは:2
データベース・テーブルのフィールド値は、1,2,4,15または3,11,13またはnullなどです.
では、入力された2に基づいて、フィールド値が1,2,4,15のレコードを見つけるにはどうすればいいですか.
最後にMySQL独自の関数FIND_を使用することができますIN_SET
FIND_IN_SET(str,strlist)

Returns a valueは、文字列strがNのサブストリングからなるリストstrlistにある場合、1~Nの値を返す.1つの文字列のリストは、文字","で区切られた複数のサブ列で構成されています.最初のパラメータが定数文字列であり、2番目のパラメータがSET列タイプである場合、FIND_IN_SET()関数はビット演算を使用するように最適化されます!strが非strlistにある場合、またはstrlistが空の列である場合、戻り値は0である.いずれかのパラメータがNULLである場合、戻り値もNULLである.最初のパラメータに「,」が含まれている場合、この関数は完全に動作しません.

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2

マイ・クエリー・ステートメント:

//
String sqlt = "from Templates t where allowuse=1 and FIND_IN_SET("+news.getN_newsfloderid()+",t.templatefloderids)>0";