人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MYSQLでのSELECT文の条件指定方法に関して教えてください。

仮にテーブルの一つのカラムに「111,121」というデータが入っているとします。

SELECT hoge from hoge_table where hoge LIKE '%11%';

というSQLを指定すると、本来は11は含まれていませんので、結果は返らないのですが、111が該当してしまい、本来の意図とは異なる結果が返ってしまいます。

このような時はどのようなSQL文を書けば良いのでしょうか。

●質問者: tomohirof
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge MySQL SELECT SQL カラム
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● e55ind
●18ポイント

SELECT hoge from hoge_table where hoge LIKE '%11%' and NOT LIKE '%111%'

◎質問者からの返答

ありがとうございます。質問の仕方が悪かったようです。。。すいません。


2 ● きゃづみぃ
●17ポイント

質問からすると 以下のようにすれば 思ったものが検索できると思われます。

SELECT hoge from hoge_table where (hoge LIKE '11,%') or (hoge LIKE '%,11,%') or (hoge LIKE '%,11');

◎質問者からの返答

ありがとうございます!確かにそうですね。


3 ● HALSPECIAL
●17ポイント

どのような結果が得たいのか、

いまいち理解できないので、ピンポイントで答えられないのですが、

正規表現を使えば可能かと思います。

http://dev.mysql.com/doc/refman/5.1/ja/regexp.html


Chocotte de Choo

MySQLでも正規表現

◎質問者からの返答

ありがとうございます。正規表現で解決してみます。

私の質問の仕方が悪かったかもしれません。。

何でも構わないのですが、例えば、旅行の行き先として、希望の都道府県を入力するページがあったとします。

「東京、大阪」という人もいますし、「沖縄と神奈川」という人もいるとします。それぞれの都道府県が、仮に1から連番で値を持っていたとすると、ある人のカラムには「1,11」、ある人には「31,33」といった形でデータが入力されることになります。

この際に、1のデータを持っている人だけを検索するには、どういうSQLを書けばいいのだろうというのが疑問であり、質問です。

ちょっと、質問の仕方が悪かったですね。反省します。


4 ● chuken_kenkou
●17ポイント

一つのカラムに「111,121」というデータが入っている

どういう意味を持つデータでしょうか?


where hoge LIKE '%11%';

というSQLを指定すると、本来は11は含まれていませんので、結果は返らないのですが、111が該当してしまい

一般的なSQL本来の動作です。

LIKE条件の使い方、データ型について、もう少し勉強しましょう。

◎質問者からの返答

ありがとうございます!もう少し勉強してみるとともに、しっかりと整理して再質問してみます。


5 ● t-wata
●17ポイント

仮にテーブルの一つのカラムに「111,121」というデータが入っているとします。

テーブルを分割しましょう。

テーブル1

ID Value Other ...
1 10,11,12 ....
2 111,121 ....

のようなテーブルは、

テーブル1

ID Other
1 ....
2 ....

テーブル2

Table1_ID Value
1 10
1 11
1 12
2 111
2 121

のように分割するべきです。この場合、2つのテーブルを結合することで、今と等価なデータが得られます。

また、テーブル2のTable1_IDとValueにindexを作成すれば、レコードがいくら増えても、

「valueが11」のような検索はほとんど変わらない性能で検索できます。

一方いまのままLikeを使っての検索だと、レコード数に比例して検索が遅くなります。

◎質問者からの返答

やはり!Tableをわけるべきではないかと思っていたんです。。。

ありがとうございます!


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ