- ベストアンサー
mysqlでLIKEで検索について
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
では select * from テーブル名 Where KEYID NOT LIKE 'K%' の結果はどうなりますか? K1002やK1003も含まれますか?
その他の回答 (3)
- superside0
- ベストアンサー率64% (452/698)
例えば、 K1002の'K'が 全角で登録されてしまっているとか、 SQLの後ろに limit 1 を 付けているとか。
- pringlez
- ベストアンサー率36% (598/1630)
>すいません、言い忘れました!!上記はすでに確認済みです!! で、「select * from テーブル名」を確認してどうなったのですか。何件ですか? >全文一致の場合(K1002を指定した時)も確認済みで正常に動作します。 それはどうでもいいです。
お礼
キャッシュの問題でした。 消してやり直したら正常に動いてくれました。
補足
>で、「select * from テーブル名」を確認してどうなったのですか。何件ですか? レコードは全件表示されて正常に動きました。
- pringlez
- ベストアンサー率36% (598/1630)
SQLは間違っていません。そのデータとそのSQLなら3件表示されます。 1件しか表示されていないように思えるのは、 ・データが違う ・SQLが違う ・SQLの実行の仕方がおかしい ・確認の仕方がおかしい のどれかです。 とりあえずwhere句なしの「select * from テーブル名」でどうなるか確認してみましょう。
補足
>とりあえずwhere句なしの「select * from テーブル名」でどうなるか確認してみましょう すいません、言い忘れました!!上記はすでに確認済みです!! 全文一致の場合(K1002を指定した時)も確認済みで正常に動作します。 部分検索になると正常に動きません。
関連するQ&A
- MySQL WHERE句のLIKE検索
初心者ですみません。 MySQL WHERE句のLIKE検索で、引っかかった文字列を 除いた項目を表示させるにはどうしたらいいでしょうか。 例えば、 SELECT * from [テーブル名] where [フィールド名] like '%あ%'; として、「あ」が入っているレコードを検索し、 該当しないレコードを表示させる。 どうか教えてください。よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- MYSQLで全てのカラムから検索する。
tbというテーブルのbangというカラムに4が含まれていれば表示というのは select * from tb where (bang) like '%4%' ; という形になりますが、このtbテーブルにさらにname,tukiというカラムがあったとして カラムに関係なくレコードのどこかに4が入っていれば抽出するというSQL文が書きたいです。 select * from tb where bang like '%4%' or name like '%4%' or tuki like '%4%' ; と書くことで何とか今まではやってきたのですが、カラム数が増えてきてしまったので、ものすごく長いSQL文なってしまいました。 もう少しスマートにする方法はありませんか?
- ベストアンサー
- MySQL
- where句のlikeと=の違いについて
Postgresバージョン7.1.1からバージョン7.4.6にしたところ困ったことがあります。 テーブル名: hoge カラム名: col (←varchar(12)) データの中身はまるっきり同じ物が入っています。 という環境です。 そこで、SQLを実行するとバージョンによって結果が異なり不可解なのです。何か分かることがありましたら返事をお願いします。 [実行したSQL] select col from hoge where col = 'コル' select col from hoge where col like 'コル' [7.1.1] 共に、答えは一つだけ'コル'が表示されます。 [7.4.6] likeの時は'コル'が一つだけ表示されます。 =の時は何十個か出てきます。 以上、宜しくお願い致します。
- 締切済み
- PostgreSQL
- jspでMysql検索で困っています。
jspでMysql検索で困っています、 コマンド画面で下記の入力をすると条件の検索が出来ます。 select * from kanagawa where fish like '%コイ%'; (8件中検索されるのは1件でそれが表示されます) jspで命令すると、違う結果が返されてきます。 String sql; sql="select * from kanagawa where fish like '%コイ%'"; ResultSet rs=db.executeQuery(sql); 最初は変数でテーブル名等受け取っていたのですがうまくいかなかったので直接検索文を入れたのですが結果は同じく違う物が検索されてしまいます。(fishのフィールド8件中5件が結果としてでます。) 何を調べても間違いなさそうですが・・ どうにもならず困っています、助けてください、お願いします。
- 締切済み
- Java
- mysqlのmatch() against()で検索結果が取得できませ
mysqlのmatch() against()で検索結果が取得できません。 select * from fulltexttable where match( a ) against( '+ほげ' in boolean mode ) で検索結果は0件ですが、 select * from fulltexttable where a like '%ほげ%' だと検索結果は取得できます。 aカラムにはフルテキストインデックスは貼ってあります。 mysqlのバージョンは5.0.77 hogeテーブルはMyISAM どなたか助けてください。
- 締切済み
- MySQL
- 複数テーブルからLIKE検索を行いたいのですが、う
複数テーブルからLIKE検索を行いたいのですが、うまくいかないので教えてください ■やりたいこと ・一つのキーワードで、MAINテーブル「hoge」カラムと、SUBテーブル「hoge」カラムを検索して、該当したレコードを表示したい ■テーブル構成 ・MAIN … 「id」「main1」「hoge」… ・SUB… 「sub_id」「main_id」「sub1」「hoge」… ・1つの「id」に対して、対応する「sub_id」が複数(「id」1は一つだけ。対応する「sub_id」1は複数あります) ■試したこと1 SELECT a.* , r.* FROM main a LEFT JOIN sub r ON a.id = r.main_id WHERE ( a.hoge LIKE '%キーワード%' OR r.hoge LIKE '%キーワード%' ) とやると、2件ヒットするはずなのに、1レコードしか取得できません(1レコードに「hoge」カラムが2つ入ります) ■試したこと2 SELECT a.* , r.hoge as rhoge FROM main a LEFT JOIN sub r ON a.id = r.main_id WHERE ( a.hoge LIKE '%キーワード%' OR r.hoge LIKE '%キーワード%' ) とやると、2件ヒットするはずなのに、1レコードしか取得できません(1レコードに「hoge」と「rhoge」カラムになります) ■試したこと3 FROMで2箇所指定するのかと思ったのですが、 SELECT a.* , r.* FROM (main a,sub r) LEFT JOIN r ON a.id = r.main_id WHERE ( a.hoge LIKE '%キーワード%' OR r.hoge LIKE '%キーワード%' ) 結果は、#1066 - Not unique table/alias: 'r'になります ■試したこと4 LEFT JOINがいらないのかと思い、削除したら、2件ヒットするはずなのに、たくさんヒットしてしまいます ■質問 欲しいのは、キーワード検索した際、該当カラムにヒットした数だけのレコードなのですが、どうすれば良いのでしょうか? ■例 ・東京で検索 ・MAINテーブル「hoge」カラム(2レコード)で2ヒット ・SUBテーブル「hoge」カラム(3レコード)で3ヒット ・ヒットした該当5レコードを取得したい
- ベストアンサー
- MySQL
- MySQL(4.1)でのサブクエリ結果をLIKE演算子を用いて検索したいです。
漢字名を入力してもらい、personalテーブルを参照して漢字(personal.j_search)からローマ字名(personal.e_search)のレコードから副問い合わせをして、gijirokuテーブルから漢字名を含む行とローマ字を含む行をOR検索したいです。 下記のとおり考えましたが。。。 副問い合わせの結果がLIKE演算子できません。 (和名でのLIKE検索とローマ字名の検索は、できますが、ローマ字名をLIKE検索する方法がわかりません。) 教えてください。 SELECT * FROM gijiroku WHERE gijiroku.title LIKE '%山田太郎%' OR gyouseki.title = ANY (SELECT personal.e_search FROM personal WHERE personal.j_search LIKE '%山田太郎%')
- 締切済み
- MySQL
- LIKEによる検索について
お世話になります。 id| text --+-------------- 1 |AD(LONG+LONG2+INT) --+-------------- 2 |AD(INT+LONG) --+-------------- 3 |AD(LONG2+INT) --+-------------- : | : というテーブル(sample)がありまして、 textカラムの'LONG'だけをを抽出したいのですが、うまく抽出できません(LONG2なども検索されてしまう)。 SELECT * FROM sample WHERE text LIKE '%LONG%' AND text NOT LIKE '%LONG2%' ではだめなのはわかりましたが、こういう場合、どう検索したらよいのでしょうか? よろしくお願いいたします。
- ベストアンサー
- PostgreSQL
補足
キャッシュの問題でした。 消してやり直したら正常に動いてくれました。