MS Access запрос замены строки - PullRequest
0 голосов
/ 06 июля 2019

У меня есть 2 таблицы, Table1 и Table2. Мне нужно заменить строку или серию строк (разделенных запятыми) в Table1, указанном в Table2.

Я сделал запрос по этому вопросу, но не повезло:

TableNew: Iif(Instr([Table1.ColumnX1],[Table2.ColumnY1],Replace([Table1.ColumnX1],[Table2.ColumnY1],[Table2.ColumnY2]),[Table1.ColumnX1])

То, чего я хотел достичь, было так, в Table1 ColumnX1 есть:

A,B,C,1,2,3,4,D,E,F,5,6

Тогда в Table2 У меня есть:

+----------+-----------+
| ColumnY1 |  ColumnY2 |
+----------+-----------+
| A        | Z         |
| B        | Y         |
| C        | X         |
| D        | W         |
| E        | V         |
| F        | U         |
+----------+-----------+

После запуска этого запроса это приведет к

Z,Y,X,1,2,3,4,W,V,U,5,6

Я бы хотел, чтобы это выполнялось в каждой строке, доступной в Table1.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 июля 2019

Вы можете использовать запрос, такой как следующий, чтобы изменить значения, хранящиеся в Table1:

update table1 inner join table2 on instr(1, table1.columnx1, table2.columny1) > 0
set table1.columnx1 = replace(table1.columnx1, table2.columny1, table2.columny2)

Обратите внимание, что объединения, реализованные в вышеупомянутом запросе, не могут отображаться конструктором запросов MS Access,однако это допустимый SQL, который может быть успешно выполнен ядром базы данных JET, используемым MS Access.

...