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

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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/06/21 10:40:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント23pt

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

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

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


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

人力検索はてな

id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント23pt

select * from テーブル名

where

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

商品名 like '%ブラビア%

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


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

id:hashizo No.3

回答回数9ベストアンサー獲得回数0

ポイント22pt

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

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

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

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

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

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

id:ikasupa No.4

回答回数1ベストアンサー獲得回数0

ポイント22pt

SELECT シリーズコード,

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

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

ELSE '不明'

END AS シリーズ名

FROM テーブル名

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

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

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

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

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

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

回答リクエストを送信したユーザーはいません