回答編集履歴
4
コード追記
answer
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
(SELECT TData.FData, TReplace.Fld1, TReplace.Fld2
|
26
26
|
FROM TData, TReplace
|
27
27
|
WHERE TData.FData Like "*" & TReplace.Fld1 & "*"
|
28
|
-
ORDER BY TReplace.ID) Q
|
28
|
+
ORDER BY TReplace.ID DESC) AS Q
|
29
29
|
SET Q.FData = Replace(Q.FData,Q.Fld1,Q.Fld2,1,-1,1);
|
30
30
|
```
|
31
31
|
クエリ実行後
|
@@ -39,4 +39,19 @@
|
|
39
39
|
|
40
40
|
|
41
41
|
参考リンク
|
42
|
-
[複数の文字列置換をクエリで一気に実行する-改良版 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-458.html)
|
42
|
+
[複数の文字列置換をクエリで一気に実行する-改良版 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-458.html)
|
43
|
+
|
44
|
+
追記
|
45
|
+
---
|
46
|
+
コメントより
|
47
|
+
> 実現したかったことは、「FData」に 「Fld1」が含まれていたら「Fld2」の値を返すとなります。
|
48
|
+
今回の場合だと「FData」内の文字が一部変換されてしまいました。
|
49
|
+
また、TDataテーブルにFData2(空白)のフィールドがあるとして、そこに「Fld2」の値を返せればと考えています。元のフィール「FData」は残したいです。
|
50
|
+
|
51
|
+
上記のクエリの応用です。
|
52
|
+
|
53
|
+
```sql
|
54
|
+
UPDATE
|
55
|
+
(SELECT TData.FData, TData.FData2, TReplace.Fld2 FROM TData, TReplace WHERE TData.FData Like "*" & TReplace.Fld1 & "*" ORDER BY TReplace.ID DESC) AS Q
|
56
|
+
SET Q.FData2 = Q.Fld2;
|
57
|
+
```
|
3
コード修正
answer
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
(SELECT TData.FData, TReplace.Fld1, TReplace.Fld2
|
26
26
|
FROM TData, TReplace
|
27
27
|
WHERE TData.FData Like "*" & TReplace.Fld1 & "*"
|
28
|
-
ORDER BY
|
28
|
+
ORDER BY TReplace.ID) Q
|
29
29
|
SET Q.FData = Replace(Q.FData,Q.Fld1,Q.Fld2,1,-1,1);
|
30
30
|
```
|
31
31
|
クエリ実行後
|
2
説明の改善
answer
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
変換対応表テーブル **TReplace**
|
2
2
|
|
3
|
-
|
|
3
|
+
|ID|Fld1|Fld2|
|
4
|
-
|--
|
4
|
+
|--|--|--|
|
5
|
-
|
|
5
|
+
|1|お母さん&お父さん|母と父|
|
6
|
-
|
|
6
|
+
|2|パパママ|母と父|
|
7
|
-
|
|
7
|
+
|3|おかあさん&おばあちゃん|母&祖母|
|
8
|
-
|
|
8
|
+
|4|お母さん|母|
|
9
|
-
|
|
9
|
+
|5|お父さん|父|
|
10
10
|
|
11
11
|
変換対象テーブル **TData**
|
12
12
|
|
@@ -26,8 +26,17 @@
|
|
26
26
|
FROM TData, TReplace
|
27
27
|
WHERE TData.FData Like "*" & TReplace.Fld1 & "*"
|
28
28
|
ORDER BY Len(TReplace.Fld1) DESC) Q
|
29
|
-
SET Q.FData = Replace(
|
29
|
+
SET Q.FData = Replace(Q.FData,Q.Fld1,Q.Fld2,1,-1,1);
|
30
30
|
```
|
31
|
+
クエリ実行後
|
31
32
|
|
33
|
+
| ID | FData |
|
34
|
+
|--|--|
|
35
|
+
|1|○○母と父○○○|
|
36
|
+
|2|□母□□父|
|
37
|
+
|3|△△△母&祖母△△|
|
38
|
+
|4|△△母と父△|
|
39
|
+
|
40
|
+
|
32
41
|
参考リンク
|
33
42
|
[複数の文字列置換をクエリで一気に実行する-改良版 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-458.html)
|
1
間違い修正
answer
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
変換対応表テーブル **TReplace**
|
2
2
|
|
3
|
-
| ID | FData |
|
4
|
-
|--|--|
|
5
|
-
|
|
3
|
+
| ID | Fld1 | Fld2 |
|
4
|
+
|----|--------------------------|----------|
|
6
|
-
|
|
5
|
+
| 1 | お母さん&お父さん | 母と父 |
|
6
|
+
| 2 | パパ ママ | 母と父 |
|
7
|
-
| 3
|
7
|
+
| 3 | おかあさん&おばあちゃん | 母&祖母 |
|
8
|
-
| 4
|
8
|
+
| 4 | お母さん | 母 |
|
9
|
+
| 5 | お父さん | 父 |
|
9
10
|
|
10
11
|
変換対象テーブル **TData**
|
11
12
|
|