回答編集履歴

4

コード追記

2021/01/05 05:47

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  WHERE TData.FData Like "*" & TReplace.Fld1 & "*"
54
54
 
55
- ORDER BY TReplace.ID) Q
55
+ ORDER BY TReplace.ID DESC) AS Q
56
56
 
57
57
  SET Q.FData = Replace(Q.FData,Q.Fld1,Q.Fld2,1,-1,1);
58
58
 
@@ -81,3 +81,33 @@
81
81
  参考リンク
82
82
 
83
83
  [複数の文字列置換をクエリで一気に実行する-改良版 - hatena chips](https://hatenachips.blog.fc2.com/blog-entry-458.html)
84
+
85
+
86
+
87
+ 追記
88
+
89
+ ---
90
+
91
+ コメントより
92
+
93
+ > 実現したかったことは、「FData」に 「Fld1」が含まれていたら「Fld2」の値を返すとなります。
94
+
95
+ 今回の場合だと「FData」内の文字が一部変換されてしまいました。
96
+
97
+ また、TDataテーブルにFData2(空白)のフィールドがあるとして、そこに「Fld2」の値を返せればと考えています。元のフィール「FData」は残したいです。
98
+
99
+
100
+
101
+ 上記のクエリの応用です。
102
+
103
+
104
+
105
+ ```sql
106
+
107
+ UPDATE
108
+
109
+ (SELECT TData.FData, TData.FData2, TReplace.Fld2 FROM TData, TReplace WHERE TData.FData Like "*" & TReplace.Fld1 & "*" ORDER BY TReplace.ID DESC) AS Q
110
+
111
+ SET Q.FData2 = Q.Fld2;
112
+
113
+ ```

3

コード修正

2021/01/05 05:47

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  WHERE TData.FData Like "*" & TReplace.Fld1 & "*"
54
54
 
55
- ORDER BY Len(TReplace.Fld1) DESC) Q
55
+ ORDER BY TReplace.ID) Q
56
56
 
57
57
  SET Q.FData = Replace(Q.FData,Q.Fld1,Q.Fld2,1,-1,1);
58
58
 

2

説明の改善

2020/12/29 04:45

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -2,19 +2,19 @@
2
2
 
3
3
 
4
4
 
5
- | ID | Fld1 | Fld2 |
5
+ |ID|Fld1|Fld2|
6
6
 
7
- |----|--------------------------|----------|
7
+ |--|--|--|
8
8
 
9
- | 1 | お母さん&お父さん | 母と父 |
9
+ |1|お母さん&お父さん|母と父|
10
10
 
11
- | 2 | パパ ママ | 母と父 |
11
+ |2|パパママ|母と父|
12
12
 
13
- | 3 | おかあさん&おばあちゃん | 母&祖母 |
13
+ |3|おかあさん&おばあちゃん|母&祖母|
14
14
 
15
- | 4 | お母さん | |
15
+ |4|お母さん|母|
16
16
 
17
- | 5 | お父さん | |
17
+ |5|お父さん|父|
18
18
 
19
19
 
20
20
 
@@ -54,9 +54,27 @@
54
54
 
55
55
  ORDER BY Len(TReplace.Fld1) DESC) Q
56
56
 
57
- SET Q.FData = Replace([Q].[FData],[Q].[Fld1],[Q].[Fld2]);
57
+ SET Q.FData = Replace(Q.FData,Q.Fld1,Q.Fld2,1,-1,1);
58
58
 
59
59
  ```
60
+
61
+ クエリ実行後
62
+
63
+
64
+
65
+ | ID | FData |
66
+
67
+ |--|--|
68
+
69
+ |1|○○母と父○○○|
70
+
71
+ |2|□母□□父|
72
+
73
+ |3|△△△母&祖母△△|
74
+
75
+ |4|△△母と父△|
76
+
77
+
60
78
 
61
79
 
62
80
 

1

間違い修正

2020/12/29 04:44

投稿

hatena19
hatena19

スコア34073

test CHANGED
@@ -2,17 +2,19 @@
2
2
 
3
3
 
4
4
 
5
- | ID | FData |
5
+ | ID | Fld1 | Fld2 |
6
6
 
7
- |--|--|
7
+ |----|--------------------------|----------|
8
8
 
9
- | 1 | ○○パパ ママ○○○ |
9
+ | 1 | お母さん&お父さん | 母と父 |
10
10
 
11
- | 2 | □おさん□□おさん |
11
+ | 2 | パパ ママ | |
12
12
 
13
- | 3 | △△△おかあさん&おばあちゃん△△ |
13
+ | 3 | おかあさん&おばあちゃん | 母&祖母 |
14
14
 
15
- | 4 | △△お母さん&お父さん△ |
15
+ | 4 | お母さん | 母 |
16
+
17
+ | 5 | お父さん | 父 |
16
18
 
17
19
 
18
20