## ロジック名

DBテーブルによる置換

## 機能

入力文字列をDBテーブルにより置換して返します。

## データ型

場所 | 型
--- | ---
1番目の入力ハンドラ | 文字列
ロジックの出力 | 文字列

詳細は「ロジックの仕様」を参照してください。

## プロパティ

カテゴリ | プロパティ | 説明
--- | --- | ---
必須設定 | リソース名 | 置換に使用するリソースを指定します。
必須設定 | テーブル名 | テーブル名を指定します。
必須設定 | キー列 | 入力ハンドラの値とマッチングを行う列を指定します。
必須設定 | 値列 | 置換する値として使用する列を指定します。
必須設定 | マッチング方法 | マッチング方法を指定します。
必須設定 | 置換方法 | 置換方法を指定します。
付加文字列 | 接頭語 | 置換後の文字列の前に追加される文字列を指定します。
付加文字列 | 接尾語 | 置換後の文字列のあとに追加される文字列を指定します。
マッチング・レコードが0件 | 処理オプション | マッチング・レコードが0件の場合の処理方法を指定します。
マッチング・レコードが0件 | 代替文字列 | 代替文字列を指定します。
マッチング・レコードが2件以上 | 処理オプション | マッチング・レコードが2件以上の場合の処理方法を指定します。
コメント | コメント | 仕様書にも設定したコメントが出力されます。変換処理には関係しません。

### マッチング方法

オプション | 説明
--- | ---
完全一致 | 入力ハンドラの値と[キー列]の値が完全に一致した場合に置換を行います。
部分一致 | 入力ハンドラの値の一部分と[キー列]の値が一致した場合に置換を行います。

### 置換方法

オプション | 説明
--- | ---
完全置換 | 1番目の入力ハンドラの値を[値列]の値に置き換えます。
部分置換 | 1番目の入力ハンドラの値で一致した部分を[値列]の値に置き換えます。

### マッチング・レコードが0件/処理オプション

オプション | 説明
--- | ---
例外を発生させる | 以下の例外を発生させます。 [mapping]の処理に失敗しました。原因:[com.appresso.ds.vp.mapper.fastconverter.NoSuchRecordException: ConvertByDBロジック - There is no such record that equals the following key(s): <キー列>]
代替文字列に置換 | [代替文字列]で指定した値に置き換えます。
1番目のハンドラの値を返す | 1番目の入力ハンドラの値をそのまま返します。

### マッチング・レコードが2件以上/処理オプション

オプション | 説明
--- | ---
例外を発生させる | 以下の例外を発生させます。 [mapping]の処理に失敗しました。原因:[com.appresso.ds.vp.mapper.fastconverter.MultipleSuchRecordsException: ConvertByDBロジック - There are multiple such records that equal the following key(s): <キー列>]
先頭のレコードを使用する | 一致した複数レコードの先頭のレコードを置換処理に使用します。
最後のレコードを使用する | 一致した複数レコードの最後のレコードを置換処理に使用します。 一致したレコードの[キー列]の値が異なる場合、先頭のレコードの[キー列]の値に一致する最後のレコードを置換処理に使用します。

## 機能の詳細

### 複数キーの指定方法

以下の方法で、キー列を複数指定することができます。

1. プロパティインスペクタの[キー列]の入力フィールドをダブルクリックします。
2. 「▼」ボタンを押下します。
3. 「置換に使用するキー列の編集」ダイアログが起動します。
4. [追加]ボタンを押下して、[キー列名]を追加します。
5. [キー列名]入力フィールド「▼」ボタンから、キー列となるカラムを選択します。
6. [OK]ボタンを押下します。
7. Mapperロジックの入力ハンドラが追加したキー列数に変更されます。

### 使用可能なグローバルリソース

[リソース名]では、以下のアダプタのグローバルリソースを指定できます。

アダプタの種類
Accessアダプタ
DB2アダプタ
Oracleアダプタ
PostgreSQLアダプタ
SQL Serverアダプタ
JDBCアダプタ
ODBCアダプタ

## 仕様制限

- [テーブル名]にはグローバルリソースの一覧設定で指定した制限数のテーブルが表示されます。
- 入力文字列に複数の変換対象があった場合には、最初に合致した1件のみが置換されます。
- 変換後の文字列に含まれるスクリプト変数の書式(例:「${var}」)は、変数に展開されず単純な文字列として扱われます。

## 注意事項

- [キー列]の値または[値列]の値がnullの場合、置換処理から除外されます。
  - マッチング・レコードの件数は、[値列]の値がnull以外のレコードの件数となります。
- 名前にマルチバイト文字や機種依存文字を含むカラムを[キー列]または[値列]に使用する場合は、カラム名を引用符で囲んでください。
  引用符はデータベースによって異なります。引用符の定義については、各データベースベンダーに問い合わせてください。

## ロジックの使用例

### マッピング定義

### ロジックの設定と処理結果(完全一致の場合)

変換テーブルを用いて曜日の表記をアルファベットから漢字に置換します。

##### プロパティ設定

プロパティ | 設定値
--- | ---
リソース名 | DB
テーブル名 | convertbydb_all
キー列 | KEY1
値列 | VALUE1
マッチング方法 | 完全一致
置換方法 | 完全置換
接頭語 |
接尾語 | 曜日
マッチング・レコードが0件/処理オプション | 1番目のハンドラの値を返す
マッチング・レコードが0件/代替文字列 |
マッチング・レコードが2件以上/処理オプション | 先頭のレコードを使用する

##### 入力データ

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

##### 変換テーブル

KEY1 | VALUE1
--- | ---
Sunday | 日
Monday | 月
Tuesday | 火
Wednesday | 水
Thursday | 木
Friday | 金
Saturday | 土

##### 結果データ

日曜日
月曜日
火曜日
水曜日
木曜日
金曜日
土曜日

### ロジックの設定と処理結果(部分一致の場合)

変換テーブルを用いて曜日の表記を漢字からアルファベットに置換します。

##### プロパティ設定

プロパティ | 設定値
--- | ---
リソース名 | DB
テーブル名 | convertbydb_partial
キー列 | KEY1
値列 | VALUE1
マッチング方法 | 部分一致
置換方法 | 部分置換
接頭語 |
接尾語 |
マッチング・レコードが0件/処理オプション | 1番目のハンドラの値を返す
マッチング・レコードが0件/代替文字列 |
マッチング・レコードが2件以上/処理オプション | 先頭のレコードを使用する

##### 入力データ

3/20 (日)
3/21 (月)
3/22 (火)
3/23 (水)
3/24 (木)
3/24 (金)
3/25 (土)

##### 変換テーブル

KEY1 | VALUE1
--- | ---
日 | Sun
月 | Mon
火 | Tue
水 | Wed
木 | Thu
金 | Fri
土 | Sat

##### 結果データ

3/20 (Sun)
3/21 (Mon)
3/22 (Tue)
3/23 (Wed)
3/24 (Thu)
3/24 (Fri)
3/25 (Sat)