2012-04-22 5 views
0

私は、このフィールド(1 | 5 | 18 | 44 | 98 | 22)のようなフィールドの埋め桁(それぞれ1-2シンボル)を含むテーブルを持っています、またフィールドには1つのディジットしか含まれていません(ディバイダなし|) このフィールドで特定の数字を検索するにはどうすればよいですか? たとえば、私は行を選択する必要がありますが、5つだけ含まれていますか、それとも18と44だけですか?方法:MYSQLテキストフィールドから選択すると、| REGEXPを使用していますか?

+3

まず、テーブルを再設計し、そのデータを別個の子テーブルに分割します。残りの質問は学問的になります。 –

+0

このブログを読む(http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/) – hjpotter92

答えて

1

SELECT * 
FROM YOUR TABLE 
WHERE INSTR(CONCAT('|', field, '|'), '|1|') >0 

あなたの行が返されます。

SELECT * 
FROM YOUR TABLE 
WHERE INSTR(CONCAT('|', field, '|'), '|31|') >0 

は見つかりません。行は返されません。

SELECT * 
FROM YOUR TABLE 
WHERE (INSTR(concat('|',field,'|'), '|18|') >0 and INSTR(concat('|',field,'|'), '|44|') >0) 

あなたのフィールドに18と44の両方が返されます。

+0

うわー!できます!ありがとう、ネシムラゾン! – user1349119

0

これを試してください:あなたが照会しながら、このようにフィールドの開始と終了にパイプを追加することができます

SELECT * FROM table WHERE field REGEXP '(^|\|)digit_you_want_add_here($|\|)'

+0

ええと、正規表現の 'empty(sub)expression'がエラーになりました – user1349119

+0

あなたが試したこと?あなたのSQLコードを投稿してください。 – Cylian

関連する問題