SQL(Oracle)について教えてください。

下記のような商品データがあります。

商品コード,シリーズコード,商品名
1001,1000,ブラビア20
1002,1000,ブラビア25
1003,1000,ブラビア30
1004,1000,BIGブラビア50

同じシリーズで異なる商品コード、商品名をもつデータです。
欲しい結果としては、
シリーズコード,シリーズ名
1000,ブラビア

商品名に共通に現れる「ブラビア」を抜き出す方法を教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/06/14 10:37:33
  • 終了:2008/06/21 10:40:07

回答(4件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/06/14 10:46:24

ポイント23pt

ストアドプロシジャーでも使えば出来なくは無いかもしれないが、

通常の SQL 文の範囲では無理。

また、仮に行うとしてもDBではなくアプリケーション側で行うべき処理です。


通常この場合、「シリーズコード,シリーズ名」の対応情報を持ったテーブルを別途作成します。

人力検索はてな

id:taknt No.2

きゃづみぃ回答回数13481ベストアンサー獲得回数11982008/06/14 11:40:48

ポイント23pt

select * from テーブル名

where

シリーズコード = '1000' and

商品名 like '%ブラビア%

部分一致検索をする場合 like を使います。


http://www.atmarkit.co.jp/fnetwork/rensai/sql01/sql1.html

id:hashizo No.3

hashizo回答回数9ベストアンサー獲得回数02008/06/15 10:26:05

ポイント22pt

SELECT DISTINCT シリーズコード, 商品名 FROM テーブル名;

とすれば、シリーズコード毎に、重複する商品名を除いた形で出力できますが、商品名の共通部分だけを抜き出すのは難しいですね。

手動で作業をするなら、上記の結果を手動で編集するとか。

自動で作業するなら、上記の結果をさらに、

同一シリーズコードを持つ場合、中に含まれる共通の文字列を検索するプログラムを作る必要があると思います。

http://q.hatena.ne.jp/answer

id:ikasupa No.4

ikasupa回答回数1ベストアンサー獲得回数02008/06/17 14:10:11

ポイント22pt

SELECT シリーズコード,

CASE WHEN 商品名 LIKE '%ブラビア%' THEN 'ブラビア'

WHEN 商品名 LIKE '%アクオス%' THEN 'アクオス'

ELSE '不明'

END AS シリーズ名

FROM テーブル名

9i以上ならばCASE文を使用してみたらどうでしょうか?

http://oracle.se-free.com/dml/04_if.html

コメントはまだありません

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

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

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

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