SQL(postgresql)のクエリーでたとえば

select * from tableX where columnA like '%word%' or columnB like '%word%';
というクエリーを改造して
"word"がcolumnAとcolumnBどっちのカラムにhitしたか判定する書き方はあるでしょうか

回答の条件
  • 1人5回まで
  • 登録:2009/11/30 09:03:38
  • 終了:2009/12/05 04:35:02

ベストアンサー

id:y-kawaz No.3

y-kawaz回答回数1420ベストアンサー獲得回数2252009/11/30 10:29:08

ポイント50pt

例えば以下のようにすれば hit_by_a, hit_by_b というカラムにそれぞれ bool の値が入ります。

select *, (columnA like '%word%') AS hit_by_a, (columnB like '%word%') AS hit_by_b from tableX where columnA like '%word%' or columnB like '%word%';
id:dedara

おお。エレガントな感じですね。

のちほど検証してみます。

2009/11/30 22:32:29

その他の回答(3件)

id:HALSPECIAL No.1

HALSPECIAL回答回数407ベストアンサー獲得回数862009/11/30 09:23:11

ポイント40pt

未検証ですが、こんなのでどうでしょうか。

select key1, key2, sum(hit_columnA), sum(hit_columnB)
from (
    select key1, key2 , 1 as hit_columnA , 0 as hit_columnB
    from tableX 
    where columnA like '%word%'
    union all
    select key1, key2 , 0 as hit_columnA , 1 as hit_columnB
    from tableX 
    where columnB like '%word%'
) tbl
group by key1, key2
order by key1, key2

もっとスマートなのがあるかもしれませんが

id:dedara

のちほど検証してみます

2009/11/30 22:32:01
id:azumi1975 No.2

azumi1975回答回数337ベストアンサー獲得回数162009/11/30 09:59:28

select *,'hitA' as hit from tableX where columnA like '%word%'

UNION

select *,'hitB' as hit from tableX where columnB like '%word%'

http://www.syboos.jp/database/doc/20080722145442155.html

id:y-kawaz No.3

y-kawaz回答回数1420ベストアンサー獲得回数2252009/11/30 10:29:08ここでベストアンサー

ポイント50pt

例えば以下のようにすれば hit_by_a, hit_by_b というカラムにそれぞれ bool の値が入ります。

select *, (columnA like '%word%') AS hit_by_a, (columnB like '%word%') AS hit_by_b from tableX where columnA like '%word%' or columnB like '%word%';
id:dedara

おお。エレガントな感じですね。

のちほど検証してみます。

2009/11/30 22:32:29
id:goog20090901 No.4

goog20090901回答回数637ベストアンサー獲得回数172009/11/30 18:25:37

回答1も回答3もむちゃくちゃ遅いと思う。

id:dedara

のちほど検証してみます。

2009/11/30 22:32:41
  • id:taknt
    columnAとcolumnBの二回 別々にやれば すぐわかる。
  • id:dedara
    カラムが多かったりパターンもあるので今回は一度に行えるものをと考えています
  • id:HALSPECIAL
    HALSPECIAL 2009/12/01 13:49:50
    id:goog20090901
    >回答1も回答3もむちゃくちゃ遅いと思う。
    そういうのはコメントに書けや!ボケ
  • id:dedara
    検証の結果ぜんぜん遅くなかったですよ。
    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません