SQLで検索した結果を元に繰り返し処理を行う
この記事でやること
SQL Serverで検索した結果の情報を元に繰り返し処理を行う際のSQLをメモφ(ー` )メモメモ
Transact-SQL (T-SQL)を使うことで繰り返し処理を行うことができます。
例:CUSTOMERSテーブルの顧客名に「二」という字が入っている人の情報をTESTテーブルに書き込みます。
CUSTOMERSテーブル
ID | 顧客名 | フリガナ | 郵便番号 |
---|---|---|---|
A001 | 鈴木一郎 | スズキイチロウ | 5330011 |
A002 | 鈴木二郎 | スズキジロウ | 5330012 |
A003 | 鈴木三郎 | スズキサブロウ | 5330013 |
B001 | 田中一郎 | タナカイチロウ | 5340011 |
B002 | 田中二郎 | タナカジロウ | 5340012 |
B003 | 田中三郎 | タナカサブロウ | 5340013 |
↓ ↓ ↓
TESTテーブル
顧客名 | フリガナ |
---|---|
鈴木二郎 | スズキジロウ |
田中二郎 | タナカジロウ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
DECLARE @顧客名 nvarchar(30) DECLARE @フリガナ nvarchar(30) --作成対象データの抽出 DECLARE info CURSOR FOR SELECT 顧客名, フリガナ FROM CUSTOMERS WHERE 顧客名 LIKE '%二%' OPEN info FETCH NEXT FROM info INTO @顧客名, @フリガナ WHILE (@@FETCH_STATUS = 0) BEGIN --レコードの追加 INSERT INTO TEST (顧客名, フリガナ) VALUES (@顧客名, @フリガナ) --次のレコード FETCH NEXT FROM info INTO @顧客名, @フリガナ END CLOSE INFO DEALLOCATE INFO |
「レコードの追加」と書いてある箇所が、繰り返し処理の内容になります。
「次のレコード」と書いてある処理で、SELECTしていたデータのカーソルを次行にしています。(for文でいうインクリメントみたいな感じ)
繰り返し処理をネストさせて処理させたい場合や、テーブル同士を結合した上で繰り返し処理したい時にとても便利です!
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント