人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【SQL SERVER2000】
テーブルAとテーブルBを使い、下記のような検索結果を表示させるクエリの記述を教えてください。

@テーブルA(商品コード)
12312345
A123
A12345678
1234A


@テーブルB(商品コードパターン,商品名)
A@@@@@@@@,商品A
A@@@,商品B
123@@@@@,商品C
@@@@A,商品D


@検索結果
12312345,商品C
A123,商品B
A12345678,商品A
1234A,商品D


以上よろしくお願い致します。

●質問者: db_Magician
●カテゴリ:コンピュータ
✍キーワード:SQL Server クエリ コード パターン 検索
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● beatgoeson
●35ポイント ベストアンサー

以下でいかがでしょうか。URLはダミーです。

http://www.yahoo.co.jp/

--------------------------------------------------------------

select

a.商品コード,

b.商品名

from テーブルA a, テーブルB b

where

a.商品コード like replace(b.商品コードパターン,'@','_') and

len(a.商品コード) = len(b.商品コードパターン)

--------------------------------------------------------------

◎質問者からの返答

回答ありがとうございます。

想定どおりの動きになりました。


2 ● chuken_kenkou
●35ポイント

こんなテーブル設計をすると、性能を出せませんよ?

行を一意に識別するキーは、何になるのでしょうか?

パターンに合致する行が複数あった場合など、どうしたいのでしょう?


create table A
(id int primary key,
 KeyValue varchar(30));
insert into A values(1,'12312345');
insert into A values(2,'A123');
insert into A values(3,'A12345678');
insert into A values(4,'1234A');

create table B
(id int primary key,
 Ptn varchar(30),
 Shohin varchar(10));
insert into B values(1,'A@@@@@@@@','商品A');
insert into B values(2,'A@@@','商品B');
insert into B values(3,'123@@@@@','商品C');
insert into B values(4,'@@@@A','商品D');

select
 A.KeyValue,Shohin
 from A
 inner join B
 on A.KeyValue like replace(B.Ptn,'@','_')

http://q.hatena.ne.jp/だみー

◎質問者からの返答

回答ありがとうございます。

これは単発のイレギュラー処理です。

商品パターンがユニークで、商品コードも複数のパターンが重複することのないコードです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ