- PR -

大文字でも小文字でもどちらでも検索できるLIKE演算子の書き方

1
投稿者投稿内容
kokansetu
常連さん
会議室デビュー日: 2007/01/25
投稿数: 41
投稿日時: 2007-08-02 11:46
お世話になります。

環境:
Windows XP
H2 DataBaseEngine
Java(Seasar2)

現在、テキストボックスにキーワードを入力して、
そのキーワードで本のタイトルをテーブルから検索するアプリケーション
を作っているのですが、次のようなSQLを書きました。

select bookSpec.title,
author.author,
book.shelfNumber,
book.rowNumber,
book.status
from bookSpec, author, book
where bookSpec.id=author.bookSpecId
and bookSpec.id=book.bookSpecId
and lower(bookSpec.title) like '%' || /*keyWord*/'Java' || '%'

このLIKE演算子の書き方では、小文字を入力した場合は検索できますが、
大文字ではできませんでした。
大文字でも小文字でもどちらでも検索できるようにするには
どうすればいいでしょうか?

ご教授いただけたらありがたいです。

よろしくお願いいたします。

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-08-02 12:35
大文字でも小文字でもどちらでも検索、というのは大文字小文字区別せずに、ということですよね?
片方だけlowerしてるからひっかからないのであって、両方lowerすることはできませんかね?
kokansetu
常連さん
会議室デビュー日: 2007/01/25
投稿数: 41
投稿日時: 2007-08-02 14:12
ベルさん、ご返信ありがとうございました。

>大文字でも小文字でもどちらでも検索、というのは大文字小文字区別せずに、ということですよね?

そうです。

> 片方だけlowerしてるからひっかからないのであって、両方lowerすることはできませ
>んかね?

両方lowerするとは、どういうことでしょうか?
and lower(bookSpec.title) upper(bookSpec.title) like '%' || /*keyWord*/'Java' || '%'
というよなことでしょうか?
これでは、エラーになってしまいました。





[ メッセージ編集済み 編集者: kokansetu 編集日時 2007-08-02 14:14 ]

[ メッセージ編集済み 編集者: kokansetu 編集日時 2007-08-02 14:25 ]
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2007-08-02 14:36
コード:
and lower(bookSpec.title) like '%' || /*keyWord*/'Java' || '%' 


ここの'Java'という所をよく見て考えてみて解決できませんか?
(lowerの意味がわかっていない?)
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-08-02 18:36
引用:
両方lowerするとは、どういうことでしょうか?
and lower(bookSpec.title) upper(bookSpec.title) like '%' || /*keyWord*/'Java' || '%'
というよなことでしょうか?
これでは、エラーになってしまいました。

えっと、なぜupperがでてきたのでしょう。
H2 DataBaseEngine とやらをよく知らないのですが
lower(bookSpec.title) upper(bookSpec.title)
と並列に書くことは許されているのでしょうか?(どういう意味になるんだろう)
私が言ったのはlikeの後にあるやつもlowerしてみたらどうか、ということです。
kokansetu
常連さん
会議室デビュー日: 2007/01/25
投稿数: 41
投稿日時: 2007-08-02 20:30
冬寂さん、べるさん、ご返信ありがとうございました。

おかげさまで
and lower(bookSpec.title) like lower('%' || /*keyWord*/'Java' || '%')
でうまくいきました。
ありがとうございました。

>えっと、なぜupperがでてきたのでしょう。
>H2 DataBaseEngine とやらをよく知らないのですが
>lower(bookSpec.title) upper(bookSpec.title)
>と並列に書くことは許されているのでしょうか?(どういう意味になるんだろう)

意味はありません。闇雲に書いてしまいました。
ご迷惑をおかけしました。
1

スキルアップ/キャリアアップ(JOB@IT)