変換対応表テーブル TReplace
ID | Fld1 | Fld2 |
---|
1 | お母さん&お父さん | 母と父 |
2 | パパママ | 母と父 |
3 | おかあさん&おばあちゃん | 母&祖母 |
4 | お母さん | 母 |
5 | お父さん | 父 |
変換対象テーブル TData
ID | FData |
---|
1 | ○○パパ ママ○○○ |
2 | □お母さん□□お父さん |
3 | △△△おかあさん&おばあちゃん△△ |
4 | △△お母さん&お父さん△ |
上記のようなテーブルがあるとして、下記のクエリを実行すればご希望の変換になります。
sql
1UPDATE
2 (SELECT TData.FData, TReplace.Fld1, TReplace.Fld2
3 FROM TData, TReplace
4 WHERE TData.FData Like "*" & TReplace.Fld1 & "*"
5 ORDER BY TReplace.ID DESC) AS Q
6SET Q.FData = Replace(Q.FData,Q.Fld1,Q.Fld2,1,-1,1);
クエリ実行後
ID | FData |
---|
1 | ○○母と父○○○ |
2 | □母□□父 |
3 | △△△母&祖母△△ |
4 | △△母と父△ |
参考リンク
複数の文字列置換をクエリで一気に実行する-改良版 - hatena chips
追記
コメントより
実現したかったことは、「FData」に 「Fld1」が含まれていたら「Fld2」の値を返すとなります。
今回の場合だと「FData」内の文字が一部変換されてしまいました。
また、TDataテーブルにFData2(空白)のフィールドがあるとして、そこに「Fld2」の値を返せればと考えています。元のフィール「FData」は残したいです。
上記のクエリの応用です。
sql
1UPDATE
2 (SELECT TData.FData, TData.FData2, TReplace.Fld2 FROM TData, TReplace WHERE TData.FData Like "*" & TReplace.Fld1 & "*" ORDER BY TReplace.ID DESC) AS Q
3 SET Q.FData2 = Q.Fld2;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/31 01:20
2020/12/31 02:31
2021/01/05 05:18
2021/01/05 05:47
2021/01/05 07:36
2021/01/05 10:19
2021/01/05 11:33
2021/01/05 11:40
2021/01/06 02:54
2021/01/06 02:58
2021/01/06 03:08