2016-08-12 9 views
0

私の問題の解決策は見つかりませんでした。ここで"、"で区切られたテキスト列でMySQLの倍数文字列を検索

は例です:Person

Aは、たとえば、表を持っています。そして、 "、"で区切られた多くの番号を含む列があります。これらの数字は物事を表していますが、今は関係ありません。

Person

nm_name: Jonas 
nm_email: [email protected] 
ds_numbers: 1,2,3,5,17,27,67,77, 

私はこのコラムds_numbersによって、テーブルの人に検索設定をフィルタリングするクエリを作りたいです。しかし、ユーザーがこの欄にある数字を少なくとも1つ選択した場合、フィルターによって魔法使いの番号が選択され、登録簿が表示されます。

たとえば「3」を選択した場合、少なくとも1つの値が文字列内にある必要があるため、このレジスタが使用されるか、「3,55,12」になります。

問題は、私は4,41,74を返すので、 '%4%'のように使うことはできません。

重要:私はこのクエリをJavaでマウントするので、ループのようなJava機能を使用できますが、解決策が見つかりませんでした。何か案は?

そして、私はMySQLを使用しています。

+0

[可能なMySQLクエリでフィールドを分割/分解できますか?](http://stackoverflow.com/questions/471914/can-you-split-explode-a-field-in-a-mysql -query) – Jasha

答えて

0

あなたはLIKEを使用することができますが、現在の形式で、あなたは偽陽性を取得します。 '%4%'は数字40または14にも一致します。

デリミタで数字を保存するようにデータを変更するのが理想的です。 "| 3 |、| 55 |、| 32 |"。 LIKE '%| 3 |%'を使用して選択すると、| 3 |と一致します。

LIKE '%3、%'を使用できますが、3が文字列の最後の数字であれば最後の数字と一致しません。

+0

私はそれについて考えました、 '%'を使用するには、本当にうまくいかないでしょう。しかし、私は "|"を使用するあなたのソリューションが好きでした。確かに動作しますが、既に巨大な基盤が築かれていますが、それは実現可能ではありません。しかし、共有してくれてありがとう! –

+1

最後にフィールドの末尾にカンマがありますか? (あなたの例では、1つしかありませんが、スニペットにすることもできます)。そうでなければ、フィールドに後続のカンマを追加できますか?もしそうなら、あなたはLIKE '%、3、%'またはLIKE '%、343、%'を使うことができます – SilicaGel

+0

ありがとう、良い解決策! –

0

LIKE演算子でワイルドカードを使用して簡単なテキスト検索を行うことができます。

SELECT ds_numbers FROM table WHERE ds_numbers LIKE '%3%' 

この質問に対する答えで述べたように、あなたは、全文検索機能を試すことができない場合は、次のSearch for string within text column in MySQL

+0

ありがとうございます。私は読むつもりです。 –

関連する問題